зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1507595 - Convert about:support to Fluent. r=Gijs,flod
Initial patch by Collin Wing (masterkrombi@gmail.com). Differential Revision: https://phabricator.services.mozilla.com/D14905 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
74953e7a43
Коммит
4f86678a71
|
@ -8,25 +8,20 @@ ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||||
|
|
||||||
add_task(async function() {
|
add_task(async function() {
|
||||||
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:support" }, async function(browser) {
|
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:support" }, async function(browser) {
|
||||||
const strings = Services.strings.createBundle(
|
|
||||||
"chrome://global/locale/aboutSupport.properties");
|
|
||||||
let allowedStates = [strings.GetStringFromName("found"),
|
|
||||||
strings.GetStringFromName("missing")];
|
|
||||||
|
|
||||||
let keyGoogleStatus = await ContentTask.spawn(browser, null, async function() {
|
let keyGoogleStatus = await ContentTask.spawn(browser, null, async function() {
|
||||||
let textBox = content.document.getElementById("key-google-box");
|
let textBox = content.document.getElementById("key-google-box");
|
||||||
await ContentTaskUtils.waitForCondition(() => textBox.textContent.trim(),
|
await ContentTaskUtils.waitForCondition(() => document.l10n.getAttributes(textBox).id,
|
||||||
"Google API key status loaded");
|
"Google API key status loaded");
|
||||||
return textBox.textContent;
|
return document.l10n.getAttributes(textBox).id;
|
||||||
});
|
});
|
||||||
ok(allowedStates.includes(keyGoogleStatus), "Google API key status shown");
|
ok(keyGoogleStatus, "Google API key status shown");
|
||||||
|
|
||||||
let keyMozillaStatus = await ContentTask.spawn(browser, null, async function() {
|
let keyMozillaStatus = await ContentTask.spawn(browser, null, async function() {
|
||||||
let textBox = content.document.getElementById("key-mozilla-box");
|
let textBox = content.document.getElementById("key-mozilla-box");
|
||||||
await ContentTaskUtils.waitForCondition(() => textBox.textContent.trim(),
|
await ContentTaskUtils.waitForCondition(() => document.l10n.getAttributes(textBox).id,
|
||||||
"Mozilla API key status loaded");
|
"Mozilla API key status loaded");
|
||||||
return textBox.textContent;
|
return document.l10n.getAttributes(textBox).id;
|
||||||
});
|
});
|
||||||
ok(allowedStates.includes(keyMozillaStatus), "Mozilla API key status shown");
|
ok(keyMozillaStatus, "Mozilla API key status shown");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,426 @@
|
||||||
|
# coding=utf8
|
||||||
|
|
||||||
|
# Any copyright is dedicated to the Public Domain.
|
||||||
|
# http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
|
import fluent.syntax.ast as FTL
|
||||||
|
from fluent.migrate import COPY
|
||||||
|
from fluent.migrate import CONCAT
|
||||||
|
from fluent.migrate import REPLACE
|
||||||
|
from fluent.migrate.helpers import transforms_from
|
||||||
|
from fluent.migrate.helpers import TERM_REFERENCE
|
||||||
|
from fluent.migrate.helpers import VARIABLE_REFERENCE
|
||||||
|
from fluent.migrate.transforms import PLURALS, REPLACE_IN_TEXT
|
||||||
|
|
||||||
|
def migrate(ctx):
|
||||||
|
"""Bug 1507595 - Migrate about:support messages to use Fluent for localization, part {index}."""
|
||||||
|
|
||||||
|
ctx.add_transforms(
|
||||||
|
"toolkit/toolkit/about/aboutSupport.ftl",
|
||||||
|
"toolkit/toolkit/about/aboutSupport.ftl",
|
||||||
|
transforms_from(
|
||||||
|
"""
|
||||||
|
page-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.pageTitle")}
|
||||||
|
crashes-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.crashes.title")}
|
||||||
|
crashes-id = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.crashes.id")}
|
||||||
|
crashes-send-date = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.crashes.sendDate")}
|
||||||
|
crashes-all-reports = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.crashes.allReports")}
|
||||||
|
crashes-no-config = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.crashes.noConfig")}
|
||||||
|
extensions-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.extensionsTitle")}
|
||||||
|
extensions-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.extensionName")}
|
||||||
|
extensions-enabled = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.extensionEnabled")}
|
||||||
|
extensions-version = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.extensionVersion")}
|
||||||
|
extensions-id = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.extensionId")}
|
||||||
|
security-software-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareTitle")}
|
||||||
|
security-software-type = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareType")}
|
||||||
|
security-software-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareName")}
|
||||||
|
security-software-antivirus = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareAntivirus")}
|
||||||
|
security-software-antispyware = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareAntiSpyware")}
|
||||||
|
security-software-firewall = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.securitySoftwareFirewall")}
|
||||||
|
features-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.featureName")}
|
||||||
|
features-version = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.featureVersion")}
|
||||||
|
features-id = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.featureId")}
|
||||||
|
app-basics-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsTitle")}
|
||||||
|
app-basics-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsName")}
|
||||||
|
app-basics-version = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsVersion")}
|
||||||
|
app-basics-build-id = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsBuildID")}
|
||||||
|
app-basics-update-channel = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsUpdateChannel")}
|
||||||
|
app-basics-update-history = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsUpdateHistory")}
|
||||||
|
app-basics-show-update-history = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsShowUpdateHistory")}
|
||||||
|
app-basics-enabled-plugins = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsEnabledPlugins")}
|
||||||
|
app-basics-build-config = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsBuildConfig")}
|
||||||
|
app-basics-user-agent = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsUserAgent")}
|
||||||
|
app-basics-os = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsOS")}
|
||||||
|
app-basics-memory-use = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsMemoryUse")}
|
||||||
|
app-basics-performance = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsPerformance")}
|
||||||
|
app-basics-service-workers = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsServiceWorkers")}
|
||||||
|
app-basics-profiles = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsProfiles")}
|
||||||
|
app-basics-multi-process-support = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsMultiProcessSupport")}
|
||||||
|
app-basics-process-count = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsProcessCount")}
|
||||||
|
app-basics-enterprise-policies = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.enterprisePolicies")}
|
||||||
|
app-basics-key-google = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsKeyGoogle")}
|
||||||
|
app-basics-key-mozilla = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsKeyMozilla")}
|
||||||
|
app-basics-safe-mode = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.appBasicsSafeMode")}
|
||||||
|
modified-key-prefs-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.modifiedKeyPrefsTitle")}
|
||||||
|
modified-prefs-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.modifiedPrefsName")}
|
||||||
|
modified-prefs-value = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.modifiedPrefsValue")}
|
||||||
|
user-js-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.userJSTitle")}
|
||||||
|
locked-key-prefs-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.lockedKeyPrefsTitle")}
|
||||||
|
locked-prefs-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.lockedPrefsName")}
|
||||||
|
locked-prefs-value = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.lockedPrefsValue")}
|
||||||
|
graphics-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsTitle")}
|
||||||
|
graphics-features-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsFeaturesTitle")}
|
||||||
|
graphics-diagnostics-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsDiagnosticsTitle")}
|
||||||
|
graphics-failure-log-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsFailureLogTitle")}
|
||||||
|
graphics-gpu1-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsGPU1Title")}
|
||||||
|
graphics-gpu2-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsGPU2Title")}
|
||||||
|
graphics-decision-log-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsDecisionLogTitle")}
|
||||||
|
graphics-crash-guards-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsCrashGuardsTitle")}
|
||||||
|
graphics-workarounds-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.graphicsWorkaroundsTitle")}
|
||||||
|
place-database-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.placeDatabaseTitle")}
|
||||||
|
place-database-integrity = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.placeDatabaseIntegrity")}
|
||||||
|
place-database-verify-integrity = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.placeDatabaseVerifyIntegrity")}
|
||||||
|
js-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.jsTitle")}
|
||||||
|
js-incremental-gc = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.jsIncrementalGC")}
|
||||||
|
a11y-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.a11yTitle")}
|
||||||
|
a11y-activated = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.a11yActivated")}
|
||||||
|
a11y-force-disabled = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.a11yForceDisabled")}
|
||||||
|
a11y-handler-used = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.a11yHandlerUsed")}
|
||||||
|
a11y-instantiator = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.a11yInstantiator")}
|
||||||
|
library-version-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.libraryVersionsTitle")}
|
||||||
|
copy-text-to-clipboard-label = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.copyTextToClipboard.label")}
|
||||||
|
copy-raw-data-to-clipboard-label = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.copyRawDataToClipboard.label")}
|
||||||
|
sandbox-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxTitle")}
|
||||||
|
sandbox-sys-call-log-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallLogTitle")}
|
||||||
|
sandbox-sys-call-index = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallIndex")}
|
||||||
|
sandbox-sys-call-age = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallAge")}
|
||||||
|
sandbox-sys-call-pid = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallPID")}
|
||||||
|
sandbox-sys-call-tid = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallTID")}
|
||||||
|
sandbox-sys-call-proc-type = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallProcType")}
|
||||||
|
sandbox-sys-call-number = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallNumber")}
|
||||||
|
sandbox-sys-call-args = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.sandboxSyscallArgs")}
|
||||||
|
safe-mode-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.safeModeTitle")}
|
||||||
|
restart-in-safe-mode-label = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.restartInSafeMode.label")}
|
||||||
|
media-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaTitle")}
|
||||||
|
media-output-devices-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaOutputDevicesTitle")}
|
||||||
|
media-input-devices-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaInputDevicesTitle")}
|
||||||
|
media-device-name = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceName")}
|
||||||
|
media-device-group = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceGroup")}
|
||||||
|
media-device-vendor = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceVendor")}
|
||||||
|
media-device-state = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceState")}
|
||||||
|
media-device-preferred = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDevicePreferred")}
|
||||||
|
media-device-format = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceFormat")}
|
||||||
|
media-device-channels = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceChannels")}
|
||||||
|
media-device-rate = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceRate")}
|
||||||
|
media-device-latency = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.mediaDeviceLatency")}
|
||||||
|
intl-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlTitle")}
|
||||||
|
intl-app-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlAppTitle")}
|
||||||
|
intl-locales-requested = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlLocalesRequested")}
|
||||||
|
intl-locales-available = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlLocalesAvailable")}
|
||||||
|
intl-locales-supported = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlLocalesSupported")}
|
||||||
|
intl-locales-default = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlLocalesDefault")}
|
||||||
|
intl-os-title = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlOSTitle")}
|
||||||
|
intl-os-prefs-system-locales = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlOSPrefsSystemLocales")}
|
||||||
|
intl-regional-prefs = { COPY("toolkit/chrome/global/aboutSupport.dtd", "aboutSupport.intlRegionalPrefs")}
|
||||||
|
raw-data-copied = { COPY("toolkit/chrome/global/aboutSupport.properties", "rawDataCopied")}
|
||||||
|
text-copied = { COPY("toolkit/chrome/global/aboutSupport.properties", "textCopied")}
|
||||||
|
clear-type-parameters = { COPY("toolkit/chrome/global/aboutSupport.properties", "clearTypeParameters")}
|
||||||
|
compositing = { COPY("toolkit/chrome/global/aboutSupport.properties", "compositing")}
|
||||||
|
hardware-h264 = { COPY("toolkit/chrome/global/aboutSupport.properties", "hardwareH264")}
|
||||||
|
main-thread-no-omtc = { COPY("toolkit/chrome/global/aboutSupport.properties", "mainThreadNoOMTC")}
|
||||||
|
yes = { COPY("toolkit/chrome/global/aboutSupport.properties", "yes")}
|
||||||
|
no = { COPY("toolkit/chrome/global/aboutSupport.properties", "no")}
|
||||||
|
found = { COPY("toolkit/chrome/global/aboutSupport.properties", "found")}
|
||||||
|
missing = { COPY("toolkit/chrome/global/aboutSupport.properties", "missing")}
|
||||||
|
gpu-description = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDescription")}
|
||||||
|
gpu-vendor-id = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuVendorID")}
|
||||||
|
gpu-device-id = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDeviceID")}
|
||||||
|
gpu-subsys-id = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuSubsysID")}
|
||||||
|
gpu-drivers = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDrivers")}
|
||||||
|
gpu-ram = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuRAM")}
|
||||||
|
gpu-driver-version = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDriverVersion")}
|
||||||
|
gpu-driver-date = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDriverDate")}
|
||||||
|
gpu-active = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuActive")}
|
||||||
|
webgl1-wsiinfo = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl1WSIInfo")}
|
||||||
|
webgl1-renderer = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl1Renderer")}
|
||||||
|
webgl1-version = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl1Version")}
|
||||||
|
webgl1-driver-extensions = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl1DriverExtensions")}
|
||||||
|
webgl1-extensions = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl1Extensions")}
|
||||||
|
webgl2-wsiinfo = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl2WSIInfo")}
|
||||||
|
webgl2-renderer = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl2Renderer")}
|
||||||
|
webgl2-version = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl2Version")}
|
||||||
|
webgl2-driver-extensions = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl2DriverExtensions")}
|
||||||
|
webgl2-extensions = { COPY("toolkit/chrome/global/aboutSupport.properties", "webgl2Extensions")}
|
||||||
|
blocklisted-bug = { COPY("toolkit/chrome/global/aboutSupport.properties", "blocklistedBug")}
|
||||||
|
d3d11layers-crash-guard = { COPY("toolkit/chrome/global/aboutSupport.properties", "d3d11layersCrashGuard")}
|
||||||
|
d3d11video-crash-guard = { COPY("toolkit/chrome/global/aboutSupport.properties", "d3d11videoCrashGuard")}
|
||||||
|
d3d9video-crash-buard = { COPY("toolkit/chrome/global/aboutSupport.properties", "d3d9videoCrashGuard")}
|
||||||
|
glcontext-crash-guard = { COPY("toolkit/chrome/global/aboutSupport.properties", "glcontextCrashGuard")}
|
||||||
|
reset-on-next-restart = { COPY("toolkit/chrome/global/aboutSupport.properties", "resetOnNextRestart")}
|
||||||
|
gpu-process-kill-button = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuProcessKillButton")}
|
||||||
|
gpu-device-reset-button = { COPY("toolkit/chrome/global/aboutSupport.properties", "gpuDeviceResetButton")}
|
||||||
|
uses-tiling = { COPY("toolkit/chrome/global/aboutSupport.properties", "usesTiling")}
|
||||||
|
content-uses-tiling = { COPY("toolkit/chrome/global/aboutSupport.properties", "contentUsesTiling")}
|
||||||
|
off-main-thread-paint-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "offMainThreadPaintEnabled")}
|
||||||
|
off-main-thread-paint-worker-count = { COPY("toolkit/chrome/global/aboutSupport.properties", "offMainThreadPaintWorkerCount")}
|
||||||
|
audio-backend = { COPY("toolkit/chrome/global/aboutSupport.properties", "audioBackend")}
|
||||||
|
max-audio-channels = { COPY("toolkit/chrome/global/aboutSupport.properties", "maxAudioChannels")}
|
||||||
|
channel-layout = { COPY("toolkit/chrome/global/aboutSupport.properties", "channelLayout")}
|
||||||
|
sample-rate = { COPY("toolkit/chrome/global/aboutSupport.properties", "sampleRate")}
|
||||||
|
min-lib-versions = { COPY("toolkit/chrome/global/aboutSupport.properties", "minLibVersions")}
|
||||||
|
loaded-lib-versions = { COPY("toolkit/chrome/global/aboutSupport.properties", "loadedLibVersions")}
|
||||||
|
has-seccomp-bpf = { COPY("toolkit/chrome/global/aboutSupport.properties", "hasSeccompBPF")}
|
||||||
|
has-seccomp-tsync = { COPY("toolkit/chrome/global/aboutSupport.properties", "hasSeccompTSync")}
|
||||||
|
has-user-namespaces = { COPY("toolkit/chrome/global/aboutSupport.properties", "hasUserNamespaces")}
|
||||||
|
has-privileged-user-namespaces = { COPY("toolkit/chrome/global/aboutSupport.properties", "hasPrivilegedUserNamespaces")}
|
||||||
|
can-sandbox-content = { COPY("toolkit/chrome/global/aboutSupport.properties", "canSandboxContent")}
|
||||||
|
can-sandbox-media = { COPY("toolkit/chrome/global/aboutSupport.properties", "canSandboxMedia")}
|
||||||
|
content-sandbox-level = { COPY("toolkit/chrome/global/aboutSupport.properties", "contentSandboxLevel")}
|
||||||
|
effective-content-sandbox-level = { COPY("toolkit/chrome/global/aboutSupport.properties", "effectiveContentSandboxLevel")}
|
||||||
|
sandbox-proc-type-content = { COPY("toolkit/chrome/global/aboutSupport.properties", "sandboxProcType.content")}
|
||||||
|
sandbox-proc-type-file = { COPY("toolkit/chrome/global/aboutSupport.properties", "sandboxProcType.file")}
|
||||||
|
sandbox-proc-type-media-plugin = { COPY("toolkit/chrome/global/aboutSupport.properties", "sandboxProcType.mediaPlugin")}
|
||||||
|
multi-process-status-0 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.0")}
|
||||||
|
multi-process-status-1 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.1")}
|
||||||
|
multi-process-status-2 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.2")}
|
||||||
|
multi-process-status-4 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.4")}
|
||||||
|
multi-process-status-6 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.6")}
|
||||||
|
multi-process-status-7 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.7")}
|
||||||
|
multi-process-status-8 = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.8")}
|
||||||
|
multi-process-status-unknown = { COPY("toolkit/chrome/global/aboutSupport.properties", "multiProcessStatus.unknown")}
|
||||||
|
async-pan-zoom = { COPY("toolkit/chrome/global/aboutSupport.properties", "asyncPanZoom")}
|
||||||
|
apz-none = { COPY("toolkit/chrome/global/aboutSupport.properties", "apzNone")}
|
||||||
|
wheel-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "wheelEnabled")}
|
||||||
|
touch-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "touchEnabled")}
|
||||||
|
drag-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "dragEnabled")}
|
||||||
|
keyboard-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "keyboardEnabled")}
|
||||||
|
autoscroll-enabled = { COPY("toolkit/chrome/global/aboutSupport.properties", "autoscrollEnabled")}
|
||||||
|
policies-inactive = { COPY("toolkit/chrome/global/aboutSupport.properties", "policies.inactive")}
|
||||||
|
policies-active = { COPY("toolkit/chrome/global/aboutSupport.properties", "policies.active")}
|
||||||
|
policies-error = { COPY("toolkit/chrome/global/aboutSupport.properties", "policies.error")}
|
||||||
|
multi-process-windows = { $remoteWindows }/{ $totalWindows }
|
||||||
|
""")
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx.add_transforms(
|
||||||
|
"toolkit/toolkit/about/aboutSupport.ftl",
|
||||||
|
"toolkit/toolkit/about/aboutSupport.ftl",
|
||||||
|
[
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("page-subtitle"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.pageSubtitle",
|
||||||
|
{
|
||||||
|
"&brandShortName;": TERM_REFERENCE("-brand-short-name"),
|
||||||
|
"<a id='supportLink'>": FTL.TextElement('<a data-l10n-name="support-link">'),
|
||||||
|
},
|
||||||
|
trim=True
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("features-title"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.featuresTitle",
|
||||||
|
{
|
||||||
|
"&brandShortName;": TERM_REFERENCE("-brand-short-name"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("app-basics-profile-dir"),
|
||||||
|
value=FTL.Pattern(
|
||||||
|
elements=[
|
||||||
|
FTL.Placeable(
|
||||||
|
expression=FTL.SelectExpression(
|
||||||
|
selector=FTL.CallExpression(
|
||||||
|
callee=FTL.Function("PLATFORM")
|
||||||
|
),
|
||||||
|
variants=[
|
||||||
|
FTL.Variant(
|
||||||
|
key=FTL.Identifier("linux"),
|
||||||
|
default=False,
|
||||||
|
value=COPY(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.appBasicsProfileDir"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Variant(
|
||||||
|
key=FTL.Identifier("other"),
|
||||||
|
default=True,
|
||||||
|
value=COPY(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.appBasicsProfileDirWinMac"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("show-dir-label"),
|
||||||
|
value=FTL.Pattern(
|
||||||
|
elements=[
|
||||||
|
FTL.Placeable(
|
||||||
|
expression=FTL.SelectExpression(
|
||||||
|
selector=FTL.CallExpression(
|
||||||
|
callee=FTL.Function("PLATFORM")
|
||||||
|
),
|
||||||
|
variants=[
|
||||||
|
FTL.Variant(
|
||||||
|
key=FTL.Identifier("macos"),
|
||||||
|
default=False,
|
||||||
|
value=COPY(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.showMac.label"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Variant(
|
||||||
|
key=FTL.Identifier("windows"),
|
||||||
|
default=False,
|
||||||
|
value=COPY(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.showWin2.label"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Variant(
|
||||||
|
key=FTL.Identifier("other"),
|
||||||
|
default=True,
|
||||||
|
value=COPY(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.showDir.label"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("user-js-description"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.dtd",
|
||||||
|
"aboutSupport.userJSDescription",
|
||||||
|
{
|
||||||
|
"<a id='prefs-user-js-link'>": FTL.TextElement('<a data-l10n-name="user-js-link">'),
|
||||||
|
"&brandShortName;": TERM_REFERENCE("-brand-short-name"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("report-crash-for-days"),
|
||||||
|
value=PLURALS(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"crashesTitle",
|
||||||
|
VARIABLE_REFERENCE("days"),
|
||||||
|
lambda text: REPLACE_IN_TEXT(
|
||||||
|
text,
|
||||||
|
{
|
||||||
|
"#1": VARIABLE_REFERENCE("days")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("crashes-time-minutes"),
|
||||||
|
value=PLURALS(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"crashesTimeMinutes",
|
||||||
|
VARIABLE_REFERENCE("minutes"),
|
||||||
|
lambda text: REPLACE_IN_TEXT(
|
||||||
|
text,
|
||||||
|
{
|
||||||
|
"#1": VARIABLE_REFERENCE("minutes")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("crashes-time-hours"),
|
||||||
|
value=PLURALS(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"crashesTimeHours",
|
||||||
|
VARIABLE_REFERENCE("hours"),
|
||||||
|
lambda text: REPLACE_IN_TEXT(
|
||||||
|
text,
|
||||||
|
{
|
||||||
|
"#1": VARIABLE_REFERENCE("hours")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("crashes-time-days"),
|
||||||
|
value=PLURALS(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"crashesTimeDays",
|
||||||
|
VARIABLE_REFERENCE("days"),
|
||||||
|
lambda text: REPLACE_IN_TEXT(
|
||||||
|
text,
|
||||||
|
{
|
||||||
|
"#1": VARIABLE_REFERENCE("days")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("pending-reports"),
|
||||||
|
value=PLURALS(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"pendingReports",
|
||||||
|
VARIABLE_REFERENCE("reports"),
|
||||||
|
lambda text: REPLACE_IN_TEXT(
|
||||||
|
text,
|
||||||
|
{
|
||||||
|
"#1": VARIABLE_REFERENCE("reports")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("bug-link"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"bugLink",
|
||||||
|
{
|
||||||
|
"%1$S": VARIABLE_REFERENCE("bugNumber"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("unknown-failure"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"unknownFailure",
|
||||||
|
{
|
||||||
|
"%1$S": VARIABLE_REFERENCE("failureCode"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("wheel-warning"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"wheelWarning",
|
||||||
|
{
|
||||||
|
"%S": VARIABLE_REFERENCE("preferenceKey"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
FTL.Message(
|
||||||
|
id=FTL.Identifier("touch-warning"),
|
||||||
|
value=REPLACE(
|
||||||
|
"toolkit/chrome/global/aboutSupport.properties",
|
||||||
|
"touchWarning",
|
||||||
|
{
|
||||||
|
"%S": VARIABLE_REFERENCE("preferenceKey"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
|
@ -17,25 +17,30 @@ ChromeUtils.defineModuleGetter(this, "PlacesDBUtils",
|
||||||
|
|
||||||
window.addEventListener("load", function onload(event) {
|
window.addEventListener("load", function onload(event) {
|
||||||
try {
|
try {
|
||||||
window.removeEventListener("load", onload);
|
window.removeEventListener("load", onload);
|
||||||
Troubleshoot.snapshot(function(snapshot) {
|
Troubleshoot.snapshot(async function(snapshot) {
|
||||||
for (let prop in snapshotFormatters)
|
for (let prop in snapshotFormatters)
|
||||||
snapshotFormatters[prop](snapshot[prop]);
|
await snapshotFormatters[prop](snapshot[prop]);
|
||||||
});
|
});
|
||||||
populateActionBox();
|
populateActionBox();
|
||||||
setupEventListeners();
|
setupEventListeners();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Cu.reportError("stack of load error for about:support: " + e + ": " + e.stack);
|
Cu.reportError("stack of load error for about:support: " + e + ": " + e.stack);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Fluent uses lisp-case IDs so this converts
|
||||||
|
// the SentenceCase info IDs to lisp-case.
|
||||||
|
function toFluentID(str) {
|
||||||
|
return str.toString().replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
// Each property in this object corresponds to a property in Troubleshoot.jsm's
|
// Each property in this object corresponds to a property in Troubleshoot.jsm's
|
||||||
// snapshot data. Each function is passed its property's corresponding data,
|
// snapshot data. Each function is passed its property's corresponding data,
|
||||||
// and it's the function's job to update the page with it.
|
// and it's the function's job to update the page with it.
|
||||||
var snapshotFormatters = {
|
var snapshotFormatters = {
|
||||||
|
|
||||||
application: function application(data) {
|
async application(data) {
|
||||||
let strings = stringBundle();
|
|
||||||
$("application-box").textContent = data.name;
|
$("application-box").textContent = data.name;
|
||||||
$("useragent-box").textContent = data.userAgent;
|
$("useragent-box").textContent = data.userAgent;
|
||||||
$("os-box").textContent = data.osVersion;
|
$("os-box").textContent = data.osVersion;
|
||||||
|
@ -49,7 +54,7 @@ var snapshotFormatters = {
|
||||||
$("updatechannel-box").textContent = data.updateChannel;
|
$("updatechannel-box").textContent = data.updateChannel;
|
||||||
$("profile-dir-box").textContent = Services.dirsvc.get("ProfD", Ci.nsIFile).path;
|
$("profile-dir-box").textContent = Services.dirsvc.get("ProfD", Ci.nsIFile).path;
|
||||||
|
|
||||||
let statusText = strings.GetStringFromName("multiProcessStatus.unknown");
|
let statusTextId = "multi-process-status-unknown";
|
||||||
|
|
||||||
// Whitelist of known values with string descriptions:
|
// Whitelist of known values with string descriptions:
|
||||||
switch (data.autoStartStatus) {
|
switch (data.autoStartStatus) {
|
||||||
|
@ -60,12 +65,17 @@ var snapshotFormatters = {
|
||||||
case 6:
|
case 6:
|
||||||
case 7:
|
case 7:
|
||||||
case 8:
|
case 8:
|
||||||
statusText = strings.GetStringFromName("multiProcessStatus." + data.autoStartStatus);
|
statusTextId = "multi-process-status-" + data.autoStartStatus;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("multiprocess-box").textContent = strings.formatStringFromName("multiProcessWindows",
|
document.l10n.setAttributes($("multiprocess-box-process-count"),
|
||||||
[data.numRemoteWindows, data.numTotalWindows, statusText], 3);
|
"multi-process-windows",
|
||||||
|
{
|
||||||
|
remoteWindows: data.numRemoteWindows,
|
||||||
|
totalWindows: data.numTotalWindows,
|
||||||
|
});
|
||||||
|
document.l10n.setAttributes($("multiprocess-box-status"), statusTextId);
|
||||||
|
|
||||||
if (data.remoteAutoStart) {
|
if (data.remoteAutoStart) {
|
||||||
$("contentprocesses-box").textContent = data.currentContentProcesses +
|
$("contentprocesses-box").textContent = data.currentContentProcesses +
|
||||||
|
@ -80,16 +90,16 @@ var snapshotFormatters = {
|
||||||
let aboutPolicies = "about:policies";
|
let aboutPolicies = "about:policies";
|
||||||
switch (data.policiesStatus) {
|
switch (data.policiesStatus) {
|
||||||
case Services.policies.INACTIVE:
|
case Services.policies.INACTIVE:
|
||||||
policiesText = strings.GetStringFromName("policies.inactive");
|
policiesText = await document.l10n.formatValue("policies-inactive");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Services.policies.ACTIVE:
|
case Services.policies.ACTIVE:
|
||||||
policiesText = strings.GetStringFromName("policies.active");
|
policiesText = await document.l10n.formatValue("policies-active");
|
||||||
aboutPolicies += "#active";
|
aboutPolicies += "#active";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
policiesText = strings.GetStringFromName("policies.error");
|
policiesText = await document.l10n.formatValue("policies-error");
|
||||||
aboutPolicies += "#errors";
|
aboutPolicies += "#errors";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -105,23 +115,20 @@ var snapshotFormatters = {
|
||||||
}
|
}
|
||||||
|
|
||||||
let keyGoogleFound = data.keyGoogleFound ? "found" : "missing";
|
let keyGoogleFound = data.keyGoogleFound ? "found" : "missing";
|
||||||
$("key-google-box").textContent = strings.GetStringFromName(keyGoogleFound);
|
document.l10n.setAttributes($("key-google-box"), keyGoogleFound);
|
||||||
|
|
||||||
let keyMozillaFound = data.keyMozillaFound ? "found" : "missing";
|
let keyMozillaFound = data.keyMozillaFound ? "found" : "missing";
|
||||||
$("key-mozilla-box").textContent = strings.GetStringFromName(keyMozillaFound);
|
document.l10n.setAttributes($("key-mozilla-box"), keyMozillaFound);
|
||||||
|
|
||||||
$("safemode-box").textContent = data.safeMode;
|
$("safemode-box").textContent = data.safeMode;
|
||||||
},
|
},
|
||||||
|
|
||||||
crashes: function crashes(data) {
|
crashes(data) {
|
||||||
if (!AppConstants.MOZ_CRASHREPORTER)
|
if (!AppConstants.MOZ_CRASHREPORTER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let strings = stringBundle();
|
|
||||||
let daysRange = Troubleshoot.kMaxCrashAge / (24 * 60 * 60 * 1000);
|
let daysRange = Troubleshoot.kMaxCrashAge / (24 * 60 * 60 * 1000);
|
||||||
$("crashes-title").textContent =
|
document.l10n.setAttributes($("crashes-title"), "report-crash-for-days", { days: daysRange });
|
||||||
PluralForm.get(daysRange, strings.GetStringFromName("crashesTitle"))
|
|
||||||
.replace("#1", daysRange);
|
|
||||||
let reportURL;
|
let reportURL;
|
||||||
try {
|
try {
|
||||||
reportURL = Services.prefs.getCharPref("breakpad.reportURL");
|
reportURL = Services.prefs.getCharPref("breakpad.reportURL");
|
||||||
|
@ -138,42 +145,38 @@ var snapshotFormatters = {
|
||||||
$("crashes-allReports").classList.remove("no-copy");
|
$("crashes-allReports").classList.remove("no-copy");
|
||||||
|
|
||||||
if (data.pending > 0) {
|
if (data.pending > 0) {
|
||||||
$("crashes-allReportsWithPending").textContent =
|
document.l10n.setAttributes($("crashes-allReportsWithPending"), "pending-reports", { reports: data.pending });
|
||||||
PluralForm.get(data.pending, strings.GetStringFromName("pendingReports"))
|
|
||||||
.replace("#1", data.pending);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let dateNow = new Date();
|
let dateNow = new Date();
|
||||||
$.append($("crashes-tbody"), data.submitted.map(function(crash) {
|
$.append($("crashes-tbody"), data.submitted.map(function(crash) {
|
||||||
let date = new Date(crash.date);
|
let date = new Date(crash.date);
|
||||||
let timePassed = dateNow - date;
|
let timePassed = dateNow - date;
|
||||||
let formattedDate;
|
let formattedDateStrId;
|
||||||
|
let formattedDateStrArgs;
|
||||||
if (timePassed >= 24 * 60 * 60 * 1000) {
|
if (timePassed >= 24 * 60 * 60 * 1000) {
|
||||||
let daysPassed = Math.round(timePassed / (24 * 60 * 60 * 1000));
|
let daysPassed = Math.round(timePassed / (24 * 60 * 60 * 1000));
|
||||||
let daysPassedString = strings.GetStringFromName("crashesTimeDays");
|
formattedDateStrId = "crashes-time-days";
|
||||||
formattedDate = PluralForm.get(daysPassed, daysPassedString)
|
formattedDateStrArgs = { days: daysPassed };
|
||||||
.replace("#1", daysPassed);
|
|
||||||
} else if (timePassed >= 60 * 60 * 1000) {
|
} else if (timePassed >= 60 * 60 * 1000) {
|
||||||
let hoursPassed = Math.round(timePassed / (60 * 60 * 1000));
|
let hoursPassed = Math.round(timePassed / (60 * 60 * 1000));
|
||||||
let hoursPassedString = strings.GetStringFromName("crashesTimeHours");
|
formattedDateStrId = "crashes-time-hours";
|
||||||
formattedDate = PluralForm.get(hoursPassed, hoursPassedString)
|
formattedDateStrArgs = { hours: hoursPassed };
|
||||||
.replace("#1", hoursPassed);
|
|
||||||
} else {
|
} else {
|
||||||
let minutesPassed = Math.max(Math.round(timePassed / (60 * 1000)), 1);
|
let minutesPassed = Math.max(Math.round(timePassed / (60 * 1000)), 1);
|
||||||
let minutesPassedString = strings.GetStringFromName("crashesTimeMinutes");
|
formattedDateStrId = "crashes-time-minutes";
|
||||||
formattedDate = PluralForm.get(minutesPassed, minutesPassedString)
|
formattedDateStrArgs = { minutes: minutesPassed };
|
||||||
.replace("#1", minutesPassed);
|
|
||||||
}
|
}
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
$.new("td", [
|
$.new("td", [
|
||||||
$.new("a", crash.id, null, {href: reportURL + crash.id}),
|
$.new("a", crash.id, null, {href: reportURL + crash.id}),
|
||||||
]),
|
]),
|
||||||
$.new("td", formattedDate),
|
$.new("td", null, null, {"data-l10n-id": formattedDateStrId, "data-l10n-args": formattedDateStrArgs}),
|
||||||
]);
|
]);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
extensions: function extensions(data) {
|
extensions(data) {
|
||||||
$.append($("extensions-tbody"), data.map(function(extension) {
|
$.append($("extensions-tbody"), data.map(function(extension) {
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
$.new("td", extension.name),
|
$.new("td", extension.name),
|
||||||
|
@ -184,7 +187,7 @@ var snapshotFormatters = {
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
securitySoftware: function securitySoftware(data) {
|
securitySoftware(data) {
|
||||||
if (!AppConstants.isPlatformAndVersionAtLeast("win", "6.2")) {
|
if (!AppConstants.isPlatformAndVersionAtLeast("win", "6.2")) {
|
||||||
$("security-software-title").hidden = true;
|
$("security-software-title").hidden = true;
|
||||||
$("security-software-table").hidden = true;
|
$("security-software-table").hidden = true;
|
||||||
|
@ -196,7 +199,7 @@ var snapshotFormatters = {
|
||||||
$("security-software-firewall").textContent = data.registeredFirewall;
|
$("security-software-firewall").textContent = data.registeredFirewall;
|
||||||
},
|
},
|
||||||
|
|
||||||
features: function features(data) {
|
features(data) {
|
||||||
$.append($("features-tbody"), data.map(function(feature) {
|
$.append($("features-tbody"), data.map(function(feature) {
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
$.new("td", feature.name),
|
$.new("td", feature.name),
|
||||||
|
@ -206,7 +209,7 @@ var snapshotFormatters = {
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
modifiedPreferences: function modifiedPreferences(data) {
|
modifiedPreferences(data) {
|
||||||
$.append($("prefs-tbody"), sortedArrayFromObject(data).map(
|
$.append($("prefs-tbody"), sortedArrayFromObject(data).map(
|
||||||
function([name, value]) {
|
function([name, value]) {
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
|
@ -220,7 +223,7 @@ var snapshotFormatters = {
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
|
|
||||||
lockedPreferences: function lockedPreferences(data) {
|
lockedPreferences(data) {
|
||||||
$.append($("locked-prefs-tbody"), sortedArrayFromObject(data).map(
|
$.append($("locked-prefs-tbody"), sortedArrayFromObject(data).map(
|
||||||
function([name, value]) {
|
function([name, value]) {
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
|
@ -231,31 +234,10 @@ var snapshotFormatters = {
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
|
|
||||||
graphics: function graphics(data) {
|
async graphics(data) {
|
||||||
let strings = stringBundle();
|
function localizedMsg(msg) {
|
||||||
|
let msgId = toFluentID(msg);
|
||||||
function localizedMsg(msgArray) {
|
return document.l10n.formatValue(msgId);
|
||||||
let nameOrMsg = msgArray.shift();
|
|
||||||
if (msgArray.length) {
|
|
||||||
// formatStringFromName logs an NS_ASSERTION failure otherwise that says
|
|
||||||
// "use GetStringFromName". Lame.
|
|
||||||
try {
|
|
||||||
return strings.formatStringFromName(nameOrMsg, msgArray,
|
|
||||||
msgArray.length);
|
|
||||||
} catch (err) {
|
|
||||||
// Throws if nameOrMsg is not a name in the bundle. This shouldn't
|
|
||||||
// actually happen though, since msgArray.length > 1 => nameOrMsg is a
|
|
||||||
// name in the bundle, not a message, and the remaining msgArray
|
|
||||||
// elements are parameters.
|
|
||||||
return nameOrMsg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return strings.GetStringFromName(nameOrMsg);
|
|
||||||
} catch (err) {
|
|
||||||
// Throws if nameOrMsg is not a name in the bundle.
|
|
||||||
}
|
|
||||||
return nameOrMsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read APZ info out of data.info, stripping it out in the process.
|
// Read APZ info out of data.info, stripping it out in the process.
|
||||||
|
@ -270,8 +252,7 @@ var snapshotFormatters = {
|
||||||
|
|
||||||
delete info[key];
|
delete info[key];
|
||||||
|
|
||||||
let message = localizedMsg([type.toLowerCase() + "Enabled"]);
|
out.push(toFluentID(type.toLowerCase() + "Enabled"));
|
||||||
out.push(message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
@ -282,21 +263,14 @@ var snapshotFormatters = {
|
||||||
// @key Text in the key column. Localized automatically, unless starts with "#".
|
// @key Text in the key column. Localized automatically, unless starts with "#".
|
||||||
// @value Text in the value column. Not localized.
|
// @value Text in the value column. Not localized.
|
||||||
function buildRow(key, value) {
|
function buildRow(key, value) {
|
||||||
let title;
|
let title = key[0] == "#" ? key.substr(1) : key;
|
||||||
if (key[0] == "#") {
|
let keyStrId = toFluentID(key);
|
||||||
title = key.substr(1);
|
let valueStrId = Array.isArray(value) ? null : toFluentID(value);
|
||||||
} else {
|
let td = $.new("td", value, null, {"data-l10n-id": valueStrId});
|
||||||
try {
|
|
||||||
title = strings.GetStringFromName(key);
|
|
||||||
} catch (e) {
|
|
||||||
title = key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let td = $.new("td", value);
|
|
||||||
td.style["white-space"] = "pre-wrap";
|
td.style["white-space"] = "pre-wrap";
|
||||||
|
|
||||||
return $.new("tr", [
|
return $.new("tr", [
|
||||||
$.new("th", title, "column"),
|
$.new("th", title, "column", {"data-l10n-id": keyStrId}),
|
||||||
td,
|
td,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -314,7 +288,7 @@ var snapshotFormatters = {
|
||||||
addRows(where, [buildRow(key, value)]);
|
addRows(where, [buildRow(key, value)]);
|
||||||
}
|
}
|
||||||
if (data.clearTypeParameters !== undefined) {
|
if (data.clearTypeParameters !== undefined) {
|
||||||
addRow("diagnostics", "clearTypeParameters", data.clearTypeParameters);
|
addRow("diagnostics", "clear-type-parameters", data.clearTypeParameters);
|
||||||
}
|
}
|
||||||
if ("info" in data) {
|
if ("info" in data) {
|
||||||
apzInfo = formatApzInfo(data.info);
|
apzInfo = formatApzInfo(data.info);
|
||||||
|
@ -342,7 +316,7 @@ var snapshotFormatters = {
|
||||||
windowUtils.terminateGPUProcess();
|
windowUtils.terminateGPUProcess();
|
||||||
});
|
});
|
||||||
|
|
||||||
gpuProcessKillButton.textContent = strings.GetStringFromName("gpuProcessKillButton");
|
document.l10n.setAttributes(gpuProcessKillButton, "gpu-process-kill-button");
|
||||||
}
|
}
|
||||||
|
|
||||||
addRow("diagnostics", "GPUProcessPid", gpuProcessPid);
|
addRow("diagnostics", "GPUProcessPid", gpuProcessPid);
|
||||||
|
@ -358,7 +332,7 @@ var snapshotFormatters = {
|
||||||
windowUtils.triggerDeviceReset();
|
windowUtils.triggerDeviceReset();
|
||||||
});
|
});
|
||||||
|
|
||||||
gpuDeviceResetButton.textContent = strings.GetStringFromName("gpuDeviceResetButton");
|
document.l10n.setAttributes(gpuDeviceResetButton, "gpu-device-reset-button");
|
||||||
addRow("diagnostics", "Device Reset", [gpuDeviceResetButton]);
|
addRow("diagnostics", "Device Reset", [gpuDeviceResetButton]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +373,7 @@ var snapshotFormatters = {
|
||||||
// @where Table section to add to.
|
// @where Table section to add to.
|
||||||
// @key Data key to use.
|
// @key Data key to use.
|
||||||
// @colKey The localization key to use, if different from key.
|
// @colKey The localization key to use, if different from key.
|
||||||
function addRowFromKey(where, key, colKey) {
|
async function addRowFromKey(where, key, colKey) {
|
||||||
if (!(key in data))
|
if (!(key in data))
|
||||||
return;
|
return;
|
||||||
colKey = colKey || key;
|
colKey = colKey || key;
|
||||||
|
@ -407,7 +381,7 @@ var snapshotFormatters = {
|
||||||
let value;
|
let value;
|
||||||
let messageKey = key + "Message";
|
let messageKey = key + "Message";
|
||||||
if (messageKey in data) {
|
if (messageKey in data) {
|
||||||
value = localizedMsg(data[messageKey]);
|
value = await localizedMsg(data[messageKey]);
|
||||||
delete data[messageKey];
|
delete data[messageKey];
|
||||||
} else {
|
} else {
|
||||||
value = data[key];
|
value = data[key];
|
||||||
|
@ -427,7 +401,8 @@ var snapshotFormatters = {
|
||||||
compositor += " (Advanced Layers)";
|
compositor += " (Advanced Layers)";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
compositor = "BasicLayers (" + strings.GetStringFromName("mainThreadNoOMTC") + ")";
|
let noOMTCString = await document.l10n.formatValue("main-thread-no-omtc");
|
||||||
|
compositor = "BasicLayers (" + noOMTCString + ")";
|
||||||
}
|
}
|
||||||
addRow("features", "compositing", compositor);
|
addRow("features", "compositing", compositor);
|
||||||
delete data.windowLayerManagerRemote;
|
delete data.windowLayerManagerRemote;
|
||||||
|
@ -439,44 +414,53 @@ var snapshotFormatters = {
|
||||||
|
|
||||||
addRow("features", "asyncPanZoom",
|
addRow("features", "asyncPanZoom",
|
||||||
apzInfo.length
|
apzInfo.length
|
||||||
? apzInfo.join("; ")
|
? (await document.l10n.formatValues(apzInfo.map(id => { return {id}; }))).join("; ")
|
||||||
: localizedMsg(["apzNone"]));
|
: await localizedMsg("apz-none"));
|
||||||
addRowFromKey("features", "webgl1WSIInfo");
|
let featureKeys = [
|
||||||
addRowFromKey("features", "webgl1Renderer");
|
"webgl1WSIInfo",
|
||||||
addRowFromKey("features", "webgl1Version");
|
"webgl1Renderer",
|
||||||
addRowFromKey("features", "webgl1DriverExtensions");
|
"webgl1Version",
|
||||||
addRowFromKey("features", "webgl1Extensions");
|
"webgl1DriverExtensions",
|
||||||
addRowFromKey("features", "webgl2WSIInfo");
|
"webgl1Extensions",
|
||||||
addRowFromKey("features", "webgl2Renderer");
|
"webgl2WSIInfo",
|
||||||
addRowFromKey("features", "webgl2Version");
|
"webgl2Renderer",
|
||||||
addRowFromKey("features", "webgl2DriverExtensions");
|
"webgl2Version",
|
||||||
addRowFromKey("features", "webgl2Extensions");
|
"webgl2DriverExtensions",
|
||||||
addRowFromKey("features", "supportsHardwareH264", "hardwareH264");
|
"webgl2Extensions",
|
||||||
addRowFromKey("features", "direct2DEnabled", "#Direct2D");
|
["supportsHardwareH264", "hardware-h264"],
|
||||||
addRowFromKey("features", "usesTiling");
|
["direct2DEnabled", "#Direct2D"],
|
||||||
addRowFromKey("features", "contentUsesTiling");
|
"usesTiling",
|
||||||
addRowFromKey("features", "offMainThreadPaintEnabled");
|
"contentUsesTiling",
|
||||||
addRowFromKey("features", "offMainThreadPaintWorkerCount");
|
"offMainThreadPaintEnabled",
|
||||||
|
"offMainThreadPaintWorkerCount",
|
||||||
|
];
|
||||||
|
for (let feature of featureKeys) {
|
||||||
|
if (Array.isArray(feature)) {
|
||||||
|
await addRowFromKey("features", feature[0], feature[1]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
await addRowFromKey("features", feature);
|
||||||
|
}
|
||||||
|
|
||||||
if ("directWriteEnabled" in data) {
|
if ("directWriteEnabled" in data) {
|
||||||
let message = data.directWriteEnabled;
|
let message = data.directWriteEnabled;
|
||||||
if ("directWriteVersion" in data)
|
if ("directWriteVersion" in data)
|
||||||
message += " (" + data.directWriteVersion + ")";
|
message += " (" + data.directWriteVersion + ")";
|
||||||
addRow("features", "#DirectWrite", message);
|
await addRow("features", "#DirectWrite", message);
|
||||||
delete data.directWriteEnabled;
|
delete data.directWriteEnabled;
|
||||||
delete data.directWriteVersion;
|
delete data.directWriteVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adapter tbodies.
|
// Adapter tbodies.
|
||||||
let adapterKeys = [
|
let adapterKeys = [
|
||||||
["adapterDescription", "gpuDescription"],
|
["adapterDescription", "gpu-description"],
|
||||||
["adapterVendorID", "gpuVendorID"],
|
["adapterVendorID", "gpu-vendor-id"],
|
||||||
["adapterDeviceID", "gpuDeviceID"],
|
["adapterDeviceID", "gpu-device-id"],
|
||||||
["driverVersion", "gpuDriverVersion"],
|
["driverVersion", "gpu-driver-version"],
|
||||||
["driverDate", "gpuDriverDate"],
|
["driverDate", "gpu-driver-date"],
|
||||||
["adapterDrivers", "gpuDrivers"],
|
["adapterDrivers", "gpu-drivers"],
|
||||||
["adapterSubsysID", "gpuSubsysID"],
|
["adapterSubsysID", "gpu-subsys-id"],
|
||||||
["adapterRAM", "gpuRAM"],
|
["adapterRAM", "gpu-ram"],
|
||||||
];
|
];
|
||||||
|
|
||||||
function showGpu(id, suffix) {
|
function showGpu(id, suffix) {
|
||||||
|
@ -501,7 +485,8 @@ var snapshotFormatters = {
|
||||||
if ("isGPU2Active" in data && ((suffix == "2") != data.isGPU2Active)) {
|
if ("isGPU2Active" in data && ((suffix == "2") != data.isGPU2Active)) {
|
||||||
active = "no";
|
active = "no";
|
||||||
}
|
}
|
||||||
addRow(id, "gpuActive", strings.GetStringFromName(active));
|
|
||||||
|
addRow(id, "gpu-active", active);
|
||||||
addRows(id, trs);
|
addRows(id, trs);
|
||||||
}
|
}
|
||||||
showGpu("gpu-1", "");
|
showGpu("gpu-1", "");
|
||||||
|
@ -539,16 +524,17 @@ var snapshotFormatters = {
|
||||||
let m = /#BLOCKLIST_FEATURE_FAILURE_BUG_(\d+)/.exec(entry.message);
|
let m = /#BLOCKLIST_FEATURE_FAILURE_BUG_(\d+)/.exec(entry.message);
|
||||||
if (m) {
|
if (m) {
|
||||||
let bugSpan = $.new("span");
|
let bugSpan = $.new("span");
|
||||||
bugSpan.textContent = strings.GetStringFromName("blocklistedBug") + "; ";
|
document.l10n.setAttributes(bugSpan, "blocklisted-bug");
|
||||||
|
|
||||||
let bugHref = $.new("a");
|
let bugHref = $.new("a");
|
||||||
bugHref.href = "https://bugzilla.mozilla.org/show_bug.cgi?id=" + m[1];
|
bugHref.href = "https://bugzilla.mozilla.org/show_bug.cgi?id=" + m[1];
|
||||||
bugHref.textContent = strings.formatStringFromName("bugLink", [m[1]], 1);
|
document.l10n.setAttributes(bugHref, "bug-link", { bugNumber: m[1]});
|
||||||
|
|
||||||
contents = [bugSpan, bugHref];
|
contents = [bugSpan, bugHref];
|
||||||
} else {
|
} else {
|
||||||
contents = strings.formatStringFromName(
|
let unknownFailure = $.new("span");
|
||||||
"unknownFailure", [entry.message.substr(1)], 1);
|
document.l10n.setAttributes(unknownFailure, "unknown-failure", { failureCode: entry.message.substr(1) });
|
||||||
|
contents = [unknownFailure];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
contents = entry.status + " by " + entry.type + ": " + entry.message;
|
contents = entry.status + " by " + entry.type + ": " + entry.message;
|
||||||
|
@ -584,7 +570,7 @@ var snapshotFormatters = {
|
||||||
resetButton.disabled = true;
|
resetButton.disabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
resetButton.textContent = strings.GetStringFromName("resetOnNextRestart");
|
document.l10n.setAttributes(resetButton, "reset-on-next-restart");
|
||||||
resetButton.addEventListener("click", onClickReset);
|
resetButton.addEventListener("click", onClickReset);
|
||||||
|
|
||||||
addRow("crashguards", guard.type + "CrashGuard", [resetButton]);
|
addRow("crashguards", guard.type + "CrashGuard", [resetButton]);
|
||||||
|
@ -597,25 +583,20 @@ var snapshotFormatters = {
|
||||||
// the diagnostics section.
|
// the diagnostics section.
|
||||||
for (let key in data) {
|
for (let key in data) {
|
||||||
let value = data[key];
|
let value = data[key];
|
||||||
if (Array.isArray(value)) {
|
|
||||||
value = localizedMsg(value);
|
|
||||||
}
|
|
||||||
addRow("diagnostics", key, value);
|
addRow("diagnostics", key, value);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
media: function media(data) {
|
async media(data) {
|
||||||
let strings = stringBundle();
|
async function insertBasicInfo(key, value) {
|
||||||
|
async function createRow(key, value) {
|
||||||
function insertBasicInfo(key, value) {
|
let th = $.new("th", await document.l10n.formatValue(key), "column");
|
||||||
function createRow(key, value) {
|
|
||||||
let th = $.new("th", strings.GetStringFromName(key), "column");
|
|
||||||
let td = $.new("td", value);
|
let td = $.new("td", value);
|
||||||
td.style["white-space"] = "pre-wrap";
|
td.style["white-space"] = "pre-wrap";
|
||||||
td.colSpan = 8;
|
td.colSpan = 8;
|
||||||
return $.new("tr", [th, td]);
|
return $.new("tr", [th, td]);
|
||||||
}
|
}
|
||||||
$.append($("media-info-tbody"), [createRow(key, value)]);
|
$.append($("media-info-tbody"), [await createRow(key, value)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createDeviceInfoRow(device) {
|
function createDeviceInfoRow(device) {
|
||||||
|
@ -698,9 +679,9 @@ var snapshotFormatters = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Basic information
|
// Basic information
|
||||||
insertBasicInfo("audioBackend", data.currentAudioBackend);
|
await insertBasicInfo("audio-backend", data.currentAudioBackend);
|
||||||
insertBasicInfo("maxAudioChannels", data.currentMaxAudioChannels);
|
await insertBasicInfo("max-audio-channels", data.currentMaxAudioChannels);
|
||||||
insertBasicInfo("sampleRate", data.currentPreferredSampleRate);
|
await insertBasicInfo("sample-rate", data.currentPreferredSampleRate);
|
||||||
|
|
||||||
// Output devices information
|
// Output devices information
|
||||||
insertDeviceInfo("output", data.audioOutputDevices);
|
insertDeviceInfo("output", data.audioOutputDevices);
|
||||||
|
@ -709,11 +690,11 @@ var snapshotFormatters = {
|
||||||
insertDeviceInfo("input", data.audioInputDevices);
|
insertDeviceInfo("input", data.audioInputDevices);
|
||||||
},
|
},
|
||||||
|
|
||||||
javaScript: function javaScript(data) {
|
javaScript(data) {
|
||||||
$("javascript-incremental-gc").textContent = data.incrementalGCEnabled;
|
$("javascript-incremental-gc").textContent = data.incrementalGCEnabled;
|
||||||
},
|
},
|
||||||
|
|
||||||
accessibility: function accessibility(data) {
|
accessibility(data) {
|
||||||
$("a11y-activated").textContent = data.isActive;
|
$("a11y-activated").textContent = data.isActive;
|
||||||
$("a11y-force-disabled").textContent = data.forceDisabled || 0;
|
$("a11y-force-disabled").textContent = data.forceDisabled || 0;
|
||||||
|
|
||||||
|
@ -728,13 +709,12 @@ var snapshotFormatters = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
libraryVersions: function libraryVersions(data) {
|
async libraryVersions(data) {
|
||||||
let strings = stringBundle();
|
|
||||||
let trs = [
|
let trs = [
|
||||||
$.new("tr", [
|
$.new("tr", [
|
||||||
$.new("th", ""),
|
$.new("th", ""),
|
||||||
$.new("th", strings.GetStringFromName("minLibVersions")),
|
$.new("th", await document.l10n.formatValue("min-lib-versions")),
|
||||||
$.new("th", strings.GetStringFromName("loadedLibVersions")),
|
$.new("th", await document.l10n.formatValue("loaded-lib-versions")),
|
||||||
]),
|
]),
|
||||||
];
|
];
|
||||||
sortedArrayFromObject(data).forEach(
|
sortedArrayFromObject(data).forEach(
|
||||||
|
@ -749,7 +729,7 @@ var snapshotFormatters = {
|
||||||
$.append($("libversions-tbody"), trs);
|
$.append($("libversions-tbody"), trs);
|
||||||
},
|
},
|
||||||
|
|
||||||
userJS: function userJS(data) {
|
userJS(data) {
|
||||||
if (!data.exists)
|
if (!data.exists)
|
||||||
return;
|
return;
|
||||||
let userJSFile = Services.dirsvc.get("PrefD", Ci.nsIFile);
|
let userJSFile = Services.dirsvc.get("PrefD", Ci.nsIFile);
|
||||||
|
@ -760,11 +740,10 @@ var snapshotFormatters = {
|
||||||
$("prefs-user-js-section").className = "";
|
$("prefs-user-js-section").className = "";
|
||||||
},
|
},
|
||||||
|
|
||||||
sandbox: function sandbox(data) {
|
async sandbox(data) {
|
||||||
if (!AppConstants.MOZ_SANDBOX)
|
if (!AppConstants.MOZ_SANDBOX)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let strings = stringBundle();
|
|
||||||
let tbody = $("sandbox-tbody");
|
let tbody = $("sandbox-tbody");
|
||||||
for (let key in data) {
|
for (let key in data) {
|
||||||
// Simplify the display a little in the common case.
|
// Simplify the display a little in the common case.
|
||||||
|
@ -776,8 +755,9 @@ var snapshotFormatters = {
|
||||||
// Not in this table.
|
// Not in this table.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
let keyStrId = toFluentID(key);
|
||||||
tbody.appendChild($.new("tr", [
|
tbody.appendChild($.new("tr", [
|
||||||
$.new("th", strings.GetStringFromName(key), "column"),
|
$.new("th", await document.l10n.formatValue(keyStrId), "column"),
|
||||||
$.new("td", data[key]),
|
$.new("td", data[key]),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
@ -789,13 +769,13 @@ var snapshotFormatters = {
|
||||||
if (argsHead.colSpan < syscall.args.length) {
|
if (argsHead.colSpan < syscall.args.length) {
|
||||||
argsHead.colSpan = syscall.args.length;
|
argsHead.colSpan = syscall.args.length;
|
||||||
}
|
}
|
||||||
|
let procTypeStrId = toFluentID(syscall.procType);
|
||||||
let cells = [
|
let cells = [
|
||||||
$.new("td", syscall.index, "integer"),
|
$.new("td", syscall.index, "integer"),
|
||||||
$.new("td", syscall.msecAgo / 1000),
|
$.new("td", syscall.msecAgo / 1000),
|
||||||
$.new("td", syscall.pid, "integer"),
|
$.new("td", syscall.pid, "integer"),
|
||||||
$.new("td", syscall.tid, "integer"),
|
$.new("td", syscall.tid, "integer"),
|
||||||
$.new("td", strings.GetStringFromName("sandboxProcType." +
|
$.new("td", await document.l10n.formatValue("sandbox-proc-type-" + procTypeStrId)),
|
||||||
syscall.procType)),
|
|
||||||
$.new("td", syscall.syscall, "integer"),
|
$.new("td", syscall.syscall, "integer"),
|
||||||
];
|
];
|
||||||
for (let arg of syscall.args) {
|
for (let arg of syscall.args) {
|
||||||
|
@ -806,7 +786,7 @@ var snapshotFormatters = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
intl: function intl(data) {
|
intl(data) {
|
||||||
$("intl-locale-requested").textContent =
|
$("intl-locale-requested").textContent =
|
||||||
JSON.stringify(data.localeService.requested);
|
JSON.stringify(data.localeService.requested);
|
||||||
$("intl-locale-available").textContent =
|
$("intl-locale-available").textContent =
|
||||||
|
@ -829,16 +809,29 @@ var $ = document.getElementById.bind(document);
|
||||||
|
|
||||||
$.new = function $_new(tag, textContentOrChildren, className, attributes) {
|
$.new = function $_new(tag, textContentOrChildren, className, attributes) {
|
||||||
let elt = document.createElement(tag);
|
let elt = document.createElement(tag);
|
||||||
if (className)
|
if (className) {
|
||||||
elt.className = className;
|
elt.className = className;
|
||||||
if (attributes) {
|
|
||||||
for (let attrName in attributes)
|
|
||||||
elt.setAttribute(attrName, attributes[attrName]);
|
|
||||||
}
|
}
|
||||||
if (Array.isArray(textContentOrChildren))
|
if (attributes) {
|
||||||
|
if (attributes["data-l10n-id"]) {
|
||||||
|
document.l10n.setAttributes(elt,
|
||||||
|
attributes["data-l10n-id"],
|
||||||
|
attributes["data-l10n-args"]);
|
||||||
|
delete attributes["data-l10n-id"];
|
||||||
|
if (attributes["data-l10n-args"]) {
|
||||||
|
delete attributes["data-l10n-args"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let attrName in attributes) {
|
||||||
|
elt.setAttribute(attrName, attributes[attrName]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Array.isArray(textContentOrChildren)) {
|
||||||
this.append(elt, textContentOrChildren);
|
this.append(elt, textContentOrChildren);
|
||||||
else
|
} else if (textContentOrChildren) {
|
||||||
elt.textContent = String(textContentOrChildren);
|
elt.textContent = String(textContentOrChildren);
|
||||||
|
}
|
||||||
return elt;
|
return elt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -846,11 +839,6 @@ $.append = function $_append(parent, children) {
|
||||||
children.forEach(c => parent.appendChild(c));
|
children.forEach(c => parent.appendChild(c));
|
||||||
};
|
};
|
||||||
|
|
||||||
function stringBundle() {
|
|
||||||
return Services.strings.createBundle(
|
|
||||||
"chrome://global/locale/aboutSupport.properties");
|
|
||||||
}
|
|
||||||
|
|
||||||
function assembleFromGraphicsFailure(i, data) {
|
function assembleFromGraphicsFailure(i, data) {
|
||||||
// Only cover the cases we have today; for example, we do not have
|
// Only cover the cases we have today; for example, we do not have
|
||||||
// log failures that assert and we assume the log level is 1/error.
|
// log failures that assert and we assume the log level is 1/error.
|
||||||
|
@ -888,7 +876,7 @@ function copyRawDataToClipboard(button) {
|
||||||
if (button)
|
if (button)
|
||||||
button.disabled = true;
|
button.disabled = true;
|
||||||
try {
|
try {
|
||||||
Troubleshoot.snapshot(function(snapshot) {
|
Troubleshoot.snapshot(async function(snapshot) {
|
||||||
if (button)
|
if (button)
|
||||||
button.disabled = false;
|
button.disabled = false;
|
||||||
let str = Cc["@mozilla.org/supports-string;1"].
|
let str = Cc["@mozilla.org/supports-string;1"].
|
||||||
|
@ -903,8 +891,8 @@ function copyRawDataToClipboard(button) {
|
||||||
if (AppConstants.platform == "android") {
|
if (AppConstants.platform == "android") {
|
||||||
// Present a snackbar notification.
|
// Present a snackbar notification.
|
||||||
ChromeUtils.import("resource://gre/modules/Snackbars.jsm");
|
ChromeUtils.import("resource://gre/modules/Snackbars.jsm");
|
||||||
Snackbars.show(stringBundle().GetStringFromName("rawDataCopied"),
|
let rawDataCopiedString = await document.l10n.formatValue("raw-data-copied");
|
||||||
Snackbars.LENGTH_SHORT);
|
Snackbars.show(rawDataCopiedString, Snackbars.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -918,7 +906,7 @@ function getLoadContext() {
|
||||||
return window.docShell.QueryInterface(Ci.nsILoadContext);
|
return window.docShell.QueryInterface(Ci.nsILoadContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyContentsToClipboard() {
|
async function copyContentsToClipboard() {
|
||||||
// Get the HTML and text representations for the important part of the page.
|
// Get the HTML and text representations for the important part of the page.
|
||||||
let contentsDiv = $("contents");
|
let contentsDiv = $("contents");
|
||||||
let dataHtml = contentsDiv.innerHTML;
|
let dataHtml = contentsDiv.innerHTML;
|
||||||
|
@ -949,8 +937,8 @@ function copyContentsToClipboard() {
|
||||||
if (AppConstants.platform == "android") {
|
if (AppConstants.platform == "android") {
|
||||||
// Present a snackbar notification.
|
// Present a snackbar notification.
|
||||||
ChromeUtils.import("resource://gre/modules/Snackbars.jsm");
|
ChromeUtils.import("resource://gre/modules/Snackbars.jsm");
|
||||||
Snackbars.show(stringBundle().GetStringFromName("textCopied"),
|
let textCopiedString = await document.l10n.formatValue("text-copied");
|
||||||
Snackbars.LENGTH_SHORT);
|
Snackbars.show(textCopiedString, Snackbars.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,15 +6,13 @@
|
||||||
|
|
||||||
<!DOCTYPE html [
|
<!DOCTYPE html [
|
||||||
<!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> %htmlDTD;
|
<!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> %htmlDTD;
|
||||||
<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd"> %globalDTD;
|
|
||||||
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd"> %brandDTD;
|
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd"> %brandDTD;
|
||||||
<!ENTITY % aboutSupportDTD SYSTEM "chrome://global/locale/aboutSupport.dtd"> %aboutSupportDTD;
|
|
||||||
<!ENTITY % resetProfileDTD SYSTEM "chrome://global/locale/resetProfile.dtd"> %resetProfileDTD;
|
<!ENTITY % resetProfileDTD SYSTEM "chrome://global/locale/resetProfile.dtd"> %resetProfileDTD;
|
||||||
]>
|
]>
|
||||||
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<title>&aboutSupport.pageTitle;</title>
|
<title data-l10n-id="page-title"/>
|
||||||
|
|
||||||
<link rel="icon" type="image/png" id="favicon"
|
<link rel="icon" type="image/png" id="favicon"
|
||||||
href="chrome://branding/content/icon32.png"/>
|
href="chrome://branding/content/icon32.png"/>
|
||||||
|
@ -23,9 +21,11 @@
|
||||||
|
|
||||||
<script type="application/javascript"
|
<script type="application/javascript"
|
||||||
src="chrome://global/content/aboutSupport.js"/>
|
src="chrome://global/content/aboutSupport.js"/>
|
||||||
|
<link rel="localization" href="branding/brand.ftl"/>
|
||||||
|
<link rel="localization" href="toolkit/about/aboutSupport.ftl"/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body dir="&locale.dir;" class="wide-container">
|
<body class="wide-container">
|
||||||
|
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
<div id="action-box" class="notice-box">
|
<div id="action-box" class="notice-box">
|
||||||
|
@ -36,77 +36,57 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="safe-mode-box">
|
<div id="safe-mode-box">
|
||||||
<h3>&aboutSupport.safeModeTitle;</h3>
|
<h3 data-l10n-id="safe-mode-title"/>
|
||||||
<button id="restart-in-safe-mode-button">
|
<button id="restart-in-safe-mode-button" data-l10n-id="restart-in-safe-mode-label"/>
|
||||||
&aboutSupport.restartInSafeMode.label;
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
<h1>
|
<h1 data-l10n-id="page-title"/>
|
||||||
&aboutSupport.pageTitle;
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="page-subtitle">
|
<div class="page-subtitle" data-l10n-id="page-subtitle">
|
||||||
&aboutSupport.pageSubtitle;
|
<a id="supportLink" data-l10n-name="support-link"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button id="copy-raw-data-to-clipboard">
|
<button id="copy-raw-data-to-clipboard" data-l10n-id="copy-raw-data-to-clipboard-label"/>
|
||||||
&aboutSupport.copyRawDataToClipboard.label;
|
<button id="copy-to-clipboard" data-l10n-id="copy-text-to-clipboard-label"/>
|
||||||
</button>
|
|
||||||
<button id="copy-to-clipboard">
|
|
||||||
&aboutSupport.copyTextToClipboard.label;
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="contents">
|
<div id="contents">
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="app-basics-title"/>
|
||||||
&aboutSupport.appBasicsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-name"/>
|
||||||
&aboutSupport.appBasicsName;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="application-box">
|
<td id="application-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-version"/>
|
||||||
&aboutSupport.appBasicsVersion;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="version-box">
|
<td id="version-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-build-id"/>
|
||||||
&aboutSupport.appBasicsBuildID;
|
|
||||||
</th>
|
|
||||||
<td id="buildid-box"></td>
|
<td id="buildid-box"></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
#ifdef MOZ_UPDATER
|
#ifdef MOZ_UPDATER
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-update-history"/>
|
||||||
&aboutSupport.appBasicsUpdateHistory;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<button id="show-update-history-button">
|
<button id="show-update-history-button" data-l10n-id="app-basics-show-update-history"/>
|
||||||
&aboutSupport.appBasicsShowUpdateHistory;
|
|
||||||
</button>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
#endif
|
#endif
|
||||||
|
@ -114,65 +94,37 @@
|
||||||
|
|
||||||
#ifdef MOZ_UPDATER
|
#ifdef MOZ_UPDATER
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-update-channel"/>
|
||||||
&aboutSupport.appBasicsUpdateChannel;
|
|
||||||
</th>
|
|
||||||
<td id="updatechannel-box"></td>
|
<td id="updatechannel-box"></td>
|
||||||
</tr>
|
</tr>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-user-agent"/>
|
||||||
&aboutSupport.appBasicsUserAgent;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="useragent-box">
|
<td id="useragent-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-os"/>
|
||||||
&aboutSupport.appBasicsOS;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="os-box">
|
<td id="os-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="profile-row" class="no-copy">
|
<tr id="profile-row" class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-profile-dir"/>
|
||||||
#ifdef XP_WIN
|
|
||||||
&aboutSupport.appBasicsProfileDirWinMac;
|
|
||||||
#else
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
&aboutSupport.appBasicsProfileDirWinMac;
|
|
||||||
#else
|
|
||||||
&aboutSupport.appBasicsProfileDir;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<button id="profile-dir-button">
|
<button id="profile-dir-button" data-l10n-id="show-dir-label"/>
|
||||||
#ifdef XP_WIN
|
|
||||||
&aboutSupport.showWin2.label;
|
|
||||||
#else
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
&aboutSupport.showMac.label;
|
|
||||||
#else
|
|
||||||
&aboutSupport.showDir.label;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
</button>
|
|
||||||
<span id="profile-dir-box">
|
<span id="profile-dir-box">
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-enabled-plugins"/>
|
||||||
&aboutSupport.appBasicsEnabledPlugins;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:plugins">about:plugins</a>
|
<a href="about:plugins">about:plugins</a>
|
||||||
|
@ -180,9 +132,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-build-config"/>
|
||||||
&aboutSupport.appBasicsBuildConfig;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:buildconfig">about:buildconfig</a>
|
<a href="about:buildconfig">about:buildconfig</a>
|
||||||
|
@ -190,9 +140,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-memory-use"/>
|
||||||
&aboutSupport.appBasicsMemoryUse;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:memory">about:memory</a>
|
<a href="about:memory">about:memory</a>
|
||||||
|
@ -200,9 +148,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-performance"/>
|
||||||
&aboutSupport.appBasicsPerformance;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:performance">about:performance</a>
|
<a href="about:performance">about:performance</a>
|
||||||
|
@ -210,9 +156,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-service-workers"/>
|
||||||
&aboutSupport.appBasicsServiceWorkers;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:serviceworkers">about:serviceworkers</a>
|
<a href="about:serviceworkers">about:serviceworkers</a>
|
||||||
|
@ -220,54 +164,44 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-multi-process-support"/>
|
||||||
&aboutSupport.appBasicsMultiProcessSupport;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="multiprocess-box">
|
<td id="multiprocess-box">
|
||||||
|
<span id="multiprocess-box-process-count"/>
|
||||||
|
<span id="multiprocess-box-status" data-l10n-id="multi-process-status-unknown"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="contentprocesses-row">
|
<tr id="contentprocesses-row">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-process-count"/>
|
||||||
&aboutSupport.appBasicsProcessCount;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="contentprocesses-box">
|
<td id="contentprocesses-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="policies-status-row">
|
<tr id="policies-status-row">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-enterprise-policies"/>
|
||||||
&aboutSupport.enterprisePolicies;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="policies-status">
|
<td id="policies-status">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-key-google"/>
|
||||||
&aboutSupport.appBasicsKeyGoogle;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="key-google-box">
|
<td id="key-google-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-key-mozilla"/>
|
||||||
&aboutSupport.appBasicsKeyMozilla;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="key-mozilla-box">
|
<td id="key-mozilla-box">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-safe-mode"/>
|
||||||
&aboutSupport.appBasicsSafeMode;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="safemode-box">
|
<td id="safemode-box">
|
||||||
</td>
|
</td>
|
||||||
|
@ -275,9 +209,7 @@
|
||||||
|
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="app-basics-profiles"/>
|
||||||
&aboutSupport.appBasicsProfiles;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<a href="about:profiles">about:profiles</a>
|
<a href="about:profiles">about:profiles</a>
|
||||||
|
@ -291,48 +223,35 @@
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
#ifdef MOZ_CRASHREPORTER
|
#ifdef MOZ_CRASHREPORTER
|
||||||
|
|
||||||
<h2 class="major-section" id="crashes-title">
|
<h2 class="major-section" id="crashes-title" data-l10n-id="crashes-title"/>
|
||||||
&aboutSupport.crashes.title;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table id="crashes-table">
|
<table id="crashes-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="crashes-id"/>
|
||||||
&aboutSupport.crashes.id;
|
<th data-l10n-id="crashes-send-date"/>
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.crashes.sendDate;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="crashes-tbody">
|
<tbody id="crashes-tbody">
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p id="crashes-allReports" class="hidden no-copy">
|
<p id="crashes-allReports" class="hidden no-copy">
|
||||||
<a href="about:crashes" id="crashes-allReportsWithPending" class="block">&aboutSupport.crashes.allReports;</a>
|
<a href="about:crashes" id="crashes-allReportsWithPending"
|
||||||
|
class="block" data-l10n-id="crashes-all-reports"/>
|
||||||
</p>
|
</p>
|
||||||
<p id="crashes-noConfig" class="hidden no-copy">&aboutSupport.crashes.noConfig;</p>
|
<p id="crashes-noConfig" class="hidden no-copy" data-l10n-id="crashes-no-config"/>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="features-title"/>
|
||||||
&aboutSupport.featuresTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="features-name"/>
|
||||||
&aboutSupport.featureName;
|
<th data-l10n-id="features-version"/>
|
||||||
</th>
|
<th data-l10n-id="features-id"/>
|
||||||
<th>
|
|
||||||
&aboutSupport.featureVersion;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.featureId;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="features-tbody">
|
<tbody id="features-tbody">
|
||||||
|
@ -341,25 +260,15 @@
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="extensions-title"/>
|
||||||
&aboutSupport.extensionsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="extensions-name"/>
|
||||||
&aboutSupport.extensionName;
|
<th data-l10n-id="extensions-version"/>
|
||||||
</th>
|
<th data-l10n-id="extensions-enabled"/>
|
||||||
<th>
|
<th data-l10n-id="extensions-id"/>
|
||||||
&aboutSupport.extensionVersion;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.extensionEnabled;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.extensionId;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="extensions-tbody">
|
<tbody id="extensions-tbody">
|
||||||
|
@ -368,44 +277,32 @@
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section" id="security-software-title">
|
<h2 class="major-section" id="security-software-title" data-l10n-id="security-software-title"/>
|
||||||
&aboutSupport.securitySoftwareTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table id="security-software-table">
|
<table id="security-software-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="security-software-type"/>
|
||||||
&aboutSupport.securitySoftwareType;
|
<th data-l10n-id="security-software-name"/>
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.securitySoftwareName;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="security-software-antivirus"/>
|
||||||
&aboutSupport.securitySoftwareAntivirus;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="security-software-antivirus">
|
<td id="security-software-antivirus">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="security-software-antispyware"/>
|
||||||
&aboutSupport.securitySoftwareAntiSpyware;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="security-software-antispyware">
|
<td id="security-software-antispyware">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="security-software-firewall"/>
|
||||||
&aboutSupport.securitySoftwareFirewall;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="security-software-firewall">
|
<td id="security-software-firewall">
|
||||||
</td>
|
</td>
|
||||||
|
@ -415,16 +312,12 @@
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="graphics-title"/>
|
||||||
&aboutSupport.graphicsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody id="graphics-features-tbody">
|
<tbody id="graphics-features-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-features-title"/>
|
||||||
&aboutSupport.graphicsFeaturesTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
|
@ -433,141 +326,85 @@
|
||||||
|
|
||||||
<tbody id="graphics-gpu-1-tbody">
|
<tbody id="graphics-gpu-1-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-gpu1-title"/>
|
||||||
&aboutSupport.graphicsGPU1Title;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-gpu-2-tbody">
|
<tbody id="graphics-gpu-2-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-gpu2-title"/>
|
||||||
&aboutSupport.graphicsGPU2Title;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-diagnostics-tbody">
|
<tbody id="graphics-diagnostics-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-diagnostics-title"/>
|
||||||
&aboutSupport.graphicsDiagnosticsTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-decisions-tbody">
|
<tbody id="graphics-decisions-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-decision-log-title"/>
|
||||||
&aboutSupport.graphicsDecisionLogTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-crashguards-tbody">
|
<tbody id="graphics-crashguards-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-crash-guards-title"/>
|
||||||
&aboutSupport.graphicsCrashGuardsTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-workarounds-tbody">
|
<tbody id="graphics-workarounds-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-workarounds-title"/>
|
||||||
&aboutSupport.graphicsWorkaroundsTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="graphics-failures-tbody">
|
<tbody id="graphics-failures-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="graphics-failure-log-title"/>
|
||||||
&aboutSupport.graphicsFailureLogTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="media-title"/>
|
||||||
&aboutSupport.mediaTitle;
|
|
||||||
</h2>
|
|
||||||
<table>
|
<table>
|
||||||
<tbody id="media-info-tbody">
|
<tbody id="media-info-tbody">
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="media-output-devices-tbody">
|
<tbody id="media-output-devices-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="9" class="title-column">
|
<th colspan="9" class="title-column" data-l10n-id="media-output-devices-title"/>
|
||||||
&aboutSupport.mediaOutputDevicesTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="media-device-name"/>
|
||||||
&aboutSupport.mediaDeviceName;
|
<th data-l10n-id="media-device-group"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-vendor"/>
|
||||||
<th>
|
<th data-l10n-id="media-device-state"/>
|
||||||
&aboutSupport.mediaDeviceGroup;
|
<th data-l10n-id="media-device-preferred"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-format"/>
|
||||||
<th>
|
<th data-l10n-id="media-device-channels"/>
|
||||||
&aboutSupport.mediaDeviceVendor;
|
<th data-l10n-id="media-device-rate"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-latency"/>
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceState;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDevicePreferred;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceFormat;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceChannels;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceRate;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceLatency;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody id="media-input-devices-tbody">
|
<tbody id="media-input-devices-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="9" class="title-column">
|
<th colspan="9" class="title-column" data-l10n-id="media-input-devices-title"/>
|
||||||
&aboutSupport.mediaInputDevicesTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="media-device-name"/>
|
||||||
&aboutSupport.mediaDeviceName;
|
<th data-l10n-id="media-device-group"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-vendor"/>
|
||||||
<th>
|
<th data-l10n-id="media-device-state"/>
|
||||||
&aboutSupport.mediaDeviceGroup;
|
<th data-l10n-id="media-device-preferred"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-format"/>
|
||||||
<th>
|
<th data-l10n-id="media-device-channels"/>
|
||||||
&aboutSupport.mediaDeviceVendor;
|
<th data-l10n-id="media-device-rate"/>
|
||||||
</th>
|
<th data-l10n-id="media-device-latency"/>
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceState;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDevicePreferred;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceFormat;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceChannels;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceRate;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.mediaDeviceLatency;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
|
@ -575,19 +412,13 @@
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="modified-key-prefs-title"/>
|
||||||
&aboutSupport.modifiedKeyPrefsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table class="prefs-table">
|
<table class="prefs-table">
|
||||||
<thead class="no-copy">
|
<thead class="no-copy">
|
||||||
<th class="name">
|
<th class="name" data-l10n-id="modified-prefs-name"/>
|
||||||
&aboutSupport.modifiedPrefsName;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<th class="value">
|
<th class="value" data-l10n-id="modified-prefs-value"/>
|
||||||
&aboutSupport.modifiedPrefsValue;
|
|
||||||
</th>
|
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody id="prefs-tbody">
|
<tbody id="prefs-tbody">
|
||||||
|
@ -595,25 +426,21 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<section id="prefs-user-js-section" class="hidden no-copy">
|
<section id="prefs-user-js-section" class="hidden no-copy">
|
||||||
<h3>&aboutSupport.userJSTitle;</h3>
|
<h3 data-l10n-id="user-js-title"/>
|
||||||
<p>&aboutSupport.userJSDescription;</p>
|
<p data-l10n-id="user-js-description">
|
||||||
|
<a id="prefs-user-js-link" data-l10n-name="user-js-link"></a>
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="locked-key-prefs-title"/>
|
||||||
&aboutSupport.lockedKeyPrefsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table class="prefs-table">
|
<table class="prefs-table">
|
||||||
<thead class="no-copy">
|
<thead class="no-copy">
|
||||||
<th class="name">
|
<th class="name" data-l10n-id="locked-prefs-name"/>
|
||||||
&aboutSupport.lockedPrefsName;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<th class="value">
|
<th class="value" data-l10n-id="locked-prefs-value"/>
|
||||||
&aboutSupport.lockedPrefsValue;
|
|
||||||
</th>
|
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody id="locked-prefs-tbody">
|
<tbody id="locked-prefs-tbody">
|
||||||
|
@ -623,20 +450,14 @@
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="place-database-title"/>
|
||||||
&aboutSupport.placeDatabaseTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr class="no-copy">
|
<tr class="no-copy">
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="place-database-integrity"/>
|
||||||
&aboutSupport.placeDatabaseIntegrity;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<button id="verify-place-integrity-button">
|
<button id="verify-place-integrity-button" data-l10n-id="place-database-verify-integrity"/>
|
||||||
&aboutSupport.placeDatabaseVerifyIntegrity;
|
|
||||||
</button>
|
|
||||||
<pre id="verify-place-result" class="hidden no-copy"></pre>
|
<pre id="verify-place-result" class="hidden no-copy"></pre>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -644,16 +465,12 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="js-title"/>
|
||||||
&aboutSupport.jsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="js-incremental-gc"/>
|
||||||
&aboutSupport.jsIncrementalGC;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="javascript-incremental-gc">
|
<td id="javascript-incremental-gc">
|
||||||
</td>
|
</td>
|
||||||
|
@ -662,42 +479,32 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="a11y-title"/>
|
||||||
&aboutSupport.a11yTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="a11y-activated"/>
|
||||||
&aboutSupport.a11yActivated;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="a11y-activated">
|
<td id="a11y-activated">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="a11y-force-disabled"/>
|
||||||
&aboutSupport.a11yForceDisabled;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="a11y-force-disabled">
|
<td id="a11y-force-disabled">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="a11y-handler-used"/>
|
||||||
&aboutSupport.a11yHandlerUsed;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="a11y-handler-used">
|
<td id="a11y-handler-used">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="a11y-instantiator"/>
|
||||||
&aboutSupport.a11yInstantiator;
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<td id="a11y-instantiator">
|
<td id="a11y-instantiator">
|
||||||
</td>
|
</td>
|
||||||
|
@ -707,9 +514,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="library-version-title"/>
|
||||||
&aboutSupport.libraryVersionsTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody id="libversions-tbody">
|
<tbody id="libversions-tbody">
|
||||||
|
@ -719,9 +524,7 @@
|
||||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
#if defined(MOZ_SANDBOX)
|
#if defined(MOZ_SANDBOX)
|
||||||
<h2 class="major-section" id="sandbox">
|
<h2 class="major-section" id="sandbox" data-l10n-id="sandbox-title"/>
|
||||||
&aboutSupport.sandboxTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody id="sandbox-tbody">
|
<tbody id="sandbox-tbody">
|
||||||
|
@ -729,31 +532,17 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
#if defined(XP_LINUX)
|
#if defined(XP_LINUX)
|
||||||
<h4>&aboutSupport.sandboxSyscallLogTitle;</h4>
|
<h4 data-l10n-id="sandbox-sys-call-log-title"/>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th data-l10n-id="sandbox-sys-call-index"/>
|
||||||
&aboutSupport.sandboxSyscallIndex;
|
<th data-l10n-id="sandbox-sys-call-age"/>
|
||||||
</th>
|
<th data-l10n-id="sandbox-sys-call-pid"/>
|
||||||
<th>
|
<th data-l10n-id="sandbox-sys-call-tid"/>
|
||||||
&aboutSupport.sandboxSyscallAge;
|
<th data-l10n-id="sandbox-sys-call-proc-type"/>
|
||||||
</th>
|
<th data-l10n-id="sandbox-sys-call-number"/>
|
||||||
<th>
|
<th id="sandbox-syscalls-argshead" data-l10n-id="sandbox-sys-call-args"/>
|
||||||
&aboutSupport.sandboxSyscallPID;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.sandboxSyscallTID;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.sandboxSyscallProcType;
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
&aboutSupport.sandboxSyscallNumber;
|
|
||||||
</th>
|
|
||||||
<th id="sandbox-syscalls-argshead">
|
|
||||||
&aboutSupport.sandboxSyscallArgs;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="sandbox-syscalls-tbody">
|
<tbody id="sandbox-syscalls-tbody">
|
||||||
|
@ -762,70 +551,50 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
<h2 class="major-section">
|
<h2 class="major-section" data-l10n-id="intl-title"/>
|
||||||
&aboutSupport.intlTitle;
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody id="intl-localeservice-tbody">
|
<tbody id="intl-localeservice-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="intl-app-title"/>
|
||||||
&aboutSupport.intlAppTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-locales-requested"/>
|
||||||
&aboutSupport.intlLocalesRequested;
|
|
||||||
</th>
|
|
||||||
<td id="intl-locale-requested">
|
<td id="intl-locale-requested">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-locales-available"/>
|
||||||
&aboutSupport.intlLocalesAvailable;
|
|
||||||
</th>
|
|
||||||
<td id="intl-locale-available">
|
<td id="intl-locale-available">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-locales-supported"/>
|
||||||
&aboutSupport.intlLocalesSupported;
|
|
||||||
</th>
|
|
||||||
<td id="intl-locale-supported">
|
<td id="intl-locale-supported">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-regional-prefs"/>
|
||||||
&aboutSupport.intlRegionalPrefs;
|
|
||||||
</th>
|
|
||||||
<td id="intl-locale-regionalprefs">
|
<td id="intl-locale-regionalprefs">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-locales-default"/>
|
||||||
&aboutSupport.intlLocalesDefault;
|
|
||||||
</th>
|
|
||||||
<td id="intl-locale-default">
|
<td id="intl-locale-default">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tbody id="intl-ospreferences-tbody">
|
<tbody id="intl-ospreferences-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2" class="title-column">
|
<th colspan="2" class="title-column" data-l10n-id="intl-os-title"/>
|
||||||
&aboutSupport.intlOSTitle;
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-os-prefs-system-locales"/>
|
||||||
&aboutSupport.intlOSPrefsSystemLocales;
|
|
||||||
</th>
|
|
||||||
<td id="intl-osprefs-systemlocales">
|
<td id="intl-osprefs-systemlocales">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column">
|
<th class="column" data-l10n-id="intl-regional-prefs"/>
|
||||||
&aboutSupport.intlRegionalPrefs;
|
|
||||||
</th>
|
|
||||||
<td id="intl-osprefs-regionalprefs">
|
<td id="intl-osprefs-regionalprefs">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
<!-- 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/. -->
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.pageTitle "Troubleshooting Information">
|
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.pageSubtitle): don't change the 'supportLink' id. -->
|
|
||||||
<!ENTITY aboutSupport.pageSubtitle "
|
|
||||||
This page contains technical information that might be useful when you’re
|
|
||||||
trying to solve a problem. If you are looking for answers to common questions
|
|
||||||
about &brandShortName;, check out our <a id='supportLink'>support website</a>.
|
|
||||||
">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.crashes.title "Crash Reports">
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.crashes.id):
|
|
||||||
This is likely the same like id.heading in aboutcrashes.ftl. -->
|
|
||||||
<!ENTITY aboutSupport.crashes.id "Report ID">
|
|
||||||
<!ENTITY aboutSupport.crashes.sendDate "Submitted">
|
|
||||||
<!ENTITY aboutSupport.crashes.allReports "All Crash Reports">
|
|
||||||
<!ENTITY aboutSupport.crashes.noConfig "This application has not been configured to display crash reports.">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.extensionsTitle "Extensions">
|
|
||||||
<!ENTITY aboutSupport.extensionName "Name">
|
|
||||||
<!ENTITY aboutSupport.extensionEnabled "Enabled">
|
|
||||||
<!ENTITY aboutSupport.extensionVersion "Version">
|
|
||||||
<!ENTITY aboutSupport.extensionId "ID">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareTitle "Security Software">
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareType "Type">
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareName "Name">
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareAntivirus "Antivirus">
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareAntiSpyware "Antispyware">
|
|
||||||
<!ENTITY aboutSupport.securitySoftwareFirewall "Firewall">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.featuresTitle "&brandShortName; Features">
|
|
||||||
<!ENTITY aboutSupport.featureName "Name">
|
|
||||||
<!ENTITY aboutSupport.featureVersion "Version">
|
|
||||||
<!ENTITY aboutSupport.featureId "ID">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsTitle "Application Basics">
|
|
||||||
<!ENTITY aboutSupport.appBasicsName "Name">
|
|
||||||
<!ENTITY aboutSupport.appBasicsVersion "Version">
|
|
||||||
<!ENTITY aboutSupport.appBasicsBuildID "Build ID">
|
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.appBasicsUpdateChannel, aboutSupport.appBasicsUpdateHistory, aboutSupport.appBasicsShowUpdateHistory):
|
|
||||||
"Update" is a noun here, not a verb. -->
|
|
||||||
<!ENTITY aboutSupport.appBasicsUpdateChannel "Update Channel">
|
|
||||||
<!ENTITY aboutSupport.appBasicsUpdateHistory "Update History">
|
|
||||||
<!ENTITY aboutSupport.appBasicsShowUpdateHistory "Show Update History">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsProfileDir "Profile Directory">
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.appBasicsProfileDirWinMac):
|
|
||||||
This is the Windows- and Mac-specific variant of aboutSupport.appBasicsProfileDir.
|
|
||||||
Windows/Mac use the term "Folder" instead of "Directory" -->
|
|
||||||
<!ENTITY aboutSupport.appBasicsProfileDirWinMac "Profile Folder">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsEnabledPlugins "Enabled Plugins">
|
|
||||||
<!ENTITY aboutSupport.appBasicsBuildConfig "Build Configuration">
|
|
||||||
<!ENTITY aboutSupport.appBasicsUserAgent "User Agent">
|
|
||||||
<!ENTITY aboutSupport.appBasicsOS "OS">
|
|
||||||
<!ENTITY aboutSupport.appBasicsMemoryUse "Memory Use">
|
|
||||||
<!ENTITY aboutSupport.appBasicsPerformance "Performance">
|
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE the term "Service Workers" should not be translated. -->
|
|
||||||
<!ENTITY aboutSupport.appBasicsServiceWorkers "Registered Service Workers">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsProfiles "Profiles">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsMultiProcessSupport "Multiprocess Windows">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsProcessCount "Web Content Processes">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.enterprisePolicies "Enterprise Policies">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsKeyGoogle "Google Key">
|
|
||||||
<!ENTITY aboutSupport.appBasicsKeyMozilla "Mozilla Location Service Key">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.appBasicsSafeMode "Safe Mode">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.showDir.label "Open Directory">
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.showMac.label): This is the Mac-specific
|
|
||||||
variant of aboutSupport.showDir.label. This allows us to use the preferred
|
|
||||||
"Finder" terminology on Mac. -->
|
|
||||||
<!ENTITY aboutSupport.showMac.label "Show in Finder">
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.showWin2.label): This is the Windows-specific
|
|
||||||
variant of aboutSupport.showDir.label. -->
|
|
||||||
<!ENTITY aboutSupport.showWin2.label "Open Folder">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.modifiedKeyPrefsTitle "Important Modified Preferences">
|
|
||||||
<!ENTITY aboutSupport.modifiedPrefsName "Name">
|
|
||||||
<!ENTITY aboutSupport.modifiedPrefsValue "Value">
|
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE (aboutSupport.userJSTitle, aboutSupport.userJSDescription): user.js is the name of the preference override file being checked. -->
|
|
||||||
<!ENTITY aboutSupport.userJSTitle "user.js Preferences">
|
|
||||||
<!ENTITY aboutSupport.userJSDescription "Your profile folder contains a <a id='prefs-user-js-link'>user.js file</a>, which includes preferences that were not created by &brandShortName;.">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.lockedKeyPrefsTitle "Important Locked Preferences">
|
|
||||||
<!ENTITY aboutSupport.lockedPrefsName "Name">
|
|
||||||
<!ENTITY aboutSupport.lockedPrefsValue "Value">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.graphicsTitle "Graphics">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.placeDatabaseTitle "Places Database">
|
|
||||||
<!ENTITY aboutSupport.placeDatabaseIntegrity "Integrity">
|
|
||||||
<!ENTITY aboutSupport.placeDatabaseVerifyIntegrity "Verify Integrity">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.jsTitle "JavaScript">
|
|
||||||
<!ENTITY aboutSupport.jsIncrementalGC "Incremental GC">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.a11yTitle "Accessibility">
|
|
||||||
<!ENTITY aboutSupport.a11yActivated "Activated">
|
|
||||||
<!ENTITY aboutSupport.a11yForceDisabled "Prevent Accessibility">
|
|
||||||
<!ENTITY aboutSupport.a11yHandlerUsed "Accessible Handler Used">
|
|
||||||
<!ENTITY aboutSupport.a11yInstantiator "Accessibility Instantiator">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.libraryVersionsTitle "Library Versions">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.installationHistoryTitle "Installation History">
|
|
||||||
<!ENTITY aboutSupport.updateHistoryTitle "Update History">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.copyTextToClipboard.label "Copy text to clipboard">
|
|
||||||
<!ENTITY aboutSupport.copyRawDataToClipboard.label "Copy raw data to clipboard">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.sandboxTitle "Sandbox">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallLogTitle "Rejected System Calls">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallIndex "#">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallAge "Seconds Ago">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallPID "PID">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallTID "TID">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallProcType "Process Type">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallNumber "Syscall">
|
|
||||||
<!ENTITY aboutSupport.sandboxSyscallArgs "Arguments">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.safeModeTitle "Try Safe Mode">
|
|
||||||
<!ENTITY aboutSupport.restartInSafeMode.label "Restart with Add-ons Disabled…">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.graphicsFeaturesTitle "Features">
|
|
||||||
<!ENTITY aboutSupport.graphicsDiagnosticsTitle "Diagnostics">
|
|
||||||
<!ENTITY aboutSupport.graphicsFailureLogTitle "Failure Log">
|
|
||||||
<!ENTITY aboutSupport.graphicsGPU1Title "GPU #1">
|
|
||||||
<!ENTITY aboutSupport.graphicsGPU2Title "GPU #2">
|
|
||||||
<!ENTITY aboutSupport.graphicsDecisionLogTitle "Decision Log">
|
|
||||||
<!ENTITY aboutSupport.graphicsCrashGuardsTitle "Crash Guard Disabled Features">
|
|
||||||
<!ENTITY aboutSupport.graphicsWorkaroundsTitle "Workarounds">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.mediaTitle "Media">
|
|
||||||
<!ENTITY aboutSupport.mediaOutputDevicesTitle "Output Devices">
|
|
||||||
<!ENTITY aboutSupport.mediaInputDevicesTitle "Input Devices">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceName "Name">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceGroup "Group">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceVendor "Vendor">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceState "State">
|
|
||||||
<!ENTITY aboutSupport.mediaDevicePreferred "Preferred">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceFormat "Format">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceChannels "Channels">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceRate "Rate">
|
|
||||||
<!ENTITY aboutSupport.mediaDeviceLatency "Latency">
|
|
||||||
|
|
||||||
<!ENTITY aboutSupport.intlTitle "Internationalization & Localization">
|
|
||||||
<!ENTITY aboutSupport.intlAppTitle "Application Settings">
|
|
||||||
<!ENTITY aboutSupport.intlLocalesRequested "Requested Locales">
|
|
||||||
<!ENTITY aboutSupport.intlLocalesAvailable "Available Locales">
|
|
||||||
<!ENTITY aboutSupport.intlLocalesSupported "App Locales">
|
|
||||||
<!ENTITY aboutSupport.intlLocalesDefault "Default Locale">
|
|
||||||
<!ENTITY aboutSupport.intlOSTitle "Operating System">
|
|
||||||
<!ENTITY aboutSupport.intlOSPrefsSystemLocales "System Locales">
|
|
||||||
<!ENTITY aboutSupport.intlRegionalPrefs "Regional Preferences">
|
|
|
@ -2,39 +2,6 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
# LOCALIZATION NOTE (crashesTitle): Semi-colon list of plural forms.
|
|
||||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
|
||||||
# #1 number of relevant days with crash reports
|
|
||||||
crashesTitle=Crash Reports for the Last #1 Day;Crash Reports for the Last #1 Days
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (crashesTimeMinutes): Semi-colon list of plural forms.
|
|
||||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
|
||||||
# #1 number of minutes (between 1 and 59) which have passed since the crash
|
|
||||||
crashesTimeMinutes=#1 minute ago;#1 minutes ago
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (crashesTimeHours): Semi-colon list of plural forms.
|
|
||||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
|
||||||
# #1 number of hours (between 1 and 23) which have passed since the crash
|
|
||||||
crashesTimeHours=#1 hour ago;#1 hours ago
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (crashesTimeDays): Semi-colon list of plural forms.
|
|
||||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
|
||||||
# #1 number of days (1 or more) which have passed since the crash
|
|
||||||
crashesTimeDays=#1 day ago;#1 days ago
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (pendingReports): Semi-colon list of plural forms.
|
|
||||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
|
||||||
# #1 number of pending crash reports
|
|
||||||
pendingReports=All Crash Reports (including #1 pending crash in the given time range);All Crash Reports (including #1 pending crashes in the given time range)
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (rawDataCopied) Text displayed in a mobile "Toast" to user when the
|
|
||||||
# raw data is successfully copied to the clipboard via button press.
|
|
||||||
rawDataCopied=Raw data copied to clipboard
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE (textCopied) Text displayed in a mobile "Toast" to user when the
|
|
||||||
# text is successfully copied to the clipboard via button press.
|
|
||||||
textCopied=Text copied to clipboard
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE The verb "blocked" here refers to a graphics feature such as "Direct2D" or "OpenGL layers".
|
# LOCALIZATION NOTE The verb "blocked" here refers to a graphics feature such as "Direct2D" or "OpenGL layers".
|
||||||
blockedDriver = Blocked for your graphics driver version.
|
blockedDriver = Blocked for your graphics driver version.
|
||||||
|
|
||||||
|
@ -49,110 +16,3 @@ blockedOSVersion = Blocked for your operating system version.
|
||||||
|
|
||||||
# LOCALIZATION NOTE The verb "blocked" here refers to a graphics feature such as "Direct2D" or "OpenGL layers".
|
# LOCALIZATION NOTE The verb "blocked" here refers to a graphics feature such as "Direct2D" or "OpenGL layers".
|
||||||
blockedMismatchedVersion = Blocked for your graphics driver version mismatch between registry and DLL.
|
blockedMismatchedVersion = Blocked for your graphics driver version mismatch between registry and DLL.
|
||||||
|
|
||||||
# LOCALIZATION NOTE In the following strings, "Direct2D", "DirectWrite" and "ClearType"
|
|
||||||
# are proper nouns and should not be translated. Feel free to leave english strings if
|
|
||||||
# there are no good translations, these are only used in about:support
|
|
||||||
clearTypeParameters = ClearType Parameters
|
|
||||||
|
|
||||||
compositing = Compositing
|
|
||||||
hardwareH264 = Hardware H264 Decoding
|
|
||||||
mainThreadNoOMTC = main thread, no OMTC
|
|
||||||
yes = Yes
|
|
||||||
no = No
|
|
||||||
# LOCALIZATION NOTE The following strings indicate if an API key has been found.
|
|
||||||
# In some development versions, it's expected for some API keys that they are
|
|
||||||
# not found.
|
|
||||||
found = Found
|
|
||||||
missing = Missing
|
|
||||||
|
|
||||||
gpuDescription = Description
|
|
||||||
gpuVendorID = Vendor ID
|
|
||||||
gpuDeviceID = Device ID
|
|
||||||
gpuSubsysID = Subsys ID
|
|
||||||
gpuDrivers = Drivers
|
|
||||||
gpuRAM = RAM
|
|
||||||
gpuDriverVersion = Driver Version
|
|
||||||
gpuDriverDate = Driver Date
|
|
||||||
gpuActive = Active
|
|
||||||
webgl1WSIInfo = WebGL 1 Driver WSI Info
|
|
||||||
webgl1Renderer = WebGL 1 Driver Renderer
|
|
||||||
webgl1Version = WebGL 1 Driver Version
|
|
||||||
webgl1DriverExtensions = WebGL 1 Driver Extensions
|
|
||||||
webgl1Extensions = WebGL 1 Extensions
|
|
||||||
webgl2WSIInfo = WebGL 2 Driver WSI Info
|
|
||||||
webgl2Renderer = WebGL 2 Driver Renderer
|
|
||||||
webgl2Version = WebGL 2 Driver Version
|
|
||||||
webgl2DriverExtensions = WebGL 2 Driver Extensions
|
|
||||||
webgl2Extensions = WebGL 2 Extensions
|
|
||||||
GPU1 = GPU #1
|
|
||||||
GPU2 = GPU #2
|
|
||||||
blocklistedBug = Blocklisted due to known issues
|
|
||||||
# LOCALIZATION NOTE %1$S will be replaced with a bug number string.
|
|
||||||
bugLink = bug %1$S
|
|
||||||
# LOCALIZATION NOTE %1$S will be replaced with an arbitrary identifier
|
|
||||||
# string that can be searched on DXR/MXR or grepped in the source tree.
|
|
||||||
unknownFailure = Blocklisted; failure code %1$S
|
|
||||||
d3d11layersCrashGuard = D3D11 Compositor
|
|
||||||
d3d11videoCrashGuard = D3D11 Video Decoder
|
|
||||||
d3d9videoCrashGuard = D3D9 Video Decoder
|
|
||||||
glcontextCrashGuard = OpenGL
|
|
||||||
resetOnNextRestart = Reset on Next Restart
|
|
||||||
gpuProcessKillButton = Terminate GPU Process
|
|
||||||
gpuDeviceResetButton = Trigger Device Reset
|
|
||||||
usesTiling = Uses Tiling
|
|
||||||
contentUsesTiling = Uses Tiling (Content)
|
|
||||||
offMainThreadPaintEnabled = Off Main Thread Painting Enabled
|
|
||||||
offMainThreadPaintWorkerCount = Off Main Thread Painting Worker Count
|
|
||||||
|
|
||||||
audioBackend = Audio Backend
|
|
||||||
maxAudioChannels = Max Channels
|
|
||||||
channelLayout = Preferred Channel Layout
|
|
||||||
sampleRate = Preferred Sample Rate
|
|
||||||
|
|
||||||
minLibVersions = Expected minimum version
|
|
||||||
loadedLibVersions = Version in use
|
|
||||||
|
|
||||||
hasSeccompBPF = Seccomp-BPF (System Call Filtering)
|
|
||||||
hasSeccompTSync = Seccomp Thread Synchronization
|
|
||||||
hasUserNamespaces = User Namespaces
|
|
||||||
hasPrivilegedUserNamespaces = User Namespaces for privileged processes
|
|
||||||
canSandboxContent = Content Process Sandboxing
|
|
||||||
canSandboxMedia = Media Plugin Sandboxing
|
|
||||||
contentSandboxLevel = Content Process Sandbox Level
|
|
||||||
effectiveContentSandboxLevel = Effective Content Process Sandbox Level
|
|
||||||
sandboxProcType.content = content
|
|
||||||
sandboxProcType.file = file content
|
|
||||||
sandboxProcType.mediaPlugin = media plugin
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE %1$S and %2$S will be replaced with the number of remote and the total number
|
|
||||||
# of windows, respectively, while %3$S will be replaced with one of the status strings below,
|
|
||||||
# which contains a description of the multi-process preference and status.
|
|
||||||
# Note: multiProcessStatus.3 doesn't exist because status=3 was deprecated.
|
|
||||||
multiProcessWindows = %1$S/%2$S (%3$S)
|
|
||||||
multiProcessStatus.0 = Enabled by user
|
|
||||||
multiProcessStatus.1 = Enabled by default
|
|
||||||
multiProcessStatus.2 = Disabled
|
|
||||||
multiProcessStatus.4 = Disabled by accessibility tools
|
|
||||||
multiProcessStatus.5 = Disabled by lack of graphics hardware acceleration on Mac OS X
|
|
||||||
multiProcessStatus.6 = Disabled by unsupported text input
|
|
||||||
multiProcessStatus.7 = Disabled by add-ons
|
|
||||||
multiProcessStatus.8 = Disabled forcibly
|
|
||||||
multiProcessStatus.unknown = Unknown status
|
|
||||||
|
|
||||||
asyncPanZoom = Asynchronous Pan/Zoom
|
|
||||||
apzNone = none
|
|
||||||
wheelEnabled = wheel input enabled
|
|
||||||
touchEnabled = touch input enabled
|
|
||||||
dragEnabled = scrollbar drag enabled
|
|
||||||
keyboardEnabled = keyboard enabled
|
|
||||||
autoscrollEnabled = autoscroll enabled
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE %1 will be replaced with the key of a preference.
|
|
||||||
wheelWarning = async wheel input disabled due to unsupported pref: %S
|
|
||||||
touchWarning = async touch input disabled due to unsupported pref: %S
|
|
||||||
|
|
||||||
# LOCALIZATION NOTE Strings representing the status of the Enterprise Policies engine.
|
|
||||||
policies.inactive = Inactive
|
|
||||||
policies.active = Active
|
|
||||||
policies.error = Error
|
|
||||||
|
|
|
@ -0,0 +1,276 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
page-title = Troubleshooting Information
|
||||||
|
page-subtitle =
|
||||||
|
This page contains technical information that might be useful when you’re
|
||||||
|
trying to solve a problem. If you are looking for answers to common questions
|
||||||
|
about { -brand-short-name }, check out our <a data-l10n-name="support-link">support website</a>.
|
||||||
|
|
||||||
|
crashes-title = Crash Reports
|
||||||
|
crashes-id = Report ID
|
||||||
|
crashes-send-date = Submitted
|
||||||
|
crashes-all-reports = All Crash Reports
|
||||||
|
crashes-no-config = This application has not been configured to display crash reports.
|
||||||
|
extensions-title = Extensions
|
||||||
|
extensions-name = Name
|
||||||
|
extensions-enabled = Enabled
|
||||||
|
extensions-version = Version
|
||||||
|
extensions-id = ID
|
||||||
|
security-software-title = Security Software
|
||||||
|
security-software-type = Type
|
||||||
|
security-software-name = Name
|
||||||
|
security-software-antivirus = Antivirus
|
||||||
|
security-software-antispyware = Antispyware
|
||||||
|
security-software-firewall = Firewall
|
||||||
|
features-title = { -brand-short-name } Features
|
||||||
|
features-name = Name
|
||||||
|
features-version = Version
|
||||||
|
features-id = ID
|
||||||
|
app-basics-title = Application Basics
|
||||||
|
app-basics-name = Name
|
||||||
|
app-basics-version = Version
|
||||||
|
app-basics-build-id = Build ID
|
||||||
|
app-basics-update-channel = Update Channel
|
||||||
|
app-basics-update-history = Update History
|
||||||
|
app-basics-show-update-history = Show Update History
|
||||||
|
app-basics-profile-dir =
|
||||||
|
{ PLATFORM() ->
|
||||||
|
[linux] Profile Directory
|
||||||
|
*[other] Profile Folder
|
||||||
|
}
|
||||||
|
app-basics-enabled-plugins = Enabled Plugins
|
||||||
|
app-basics-build-config = Build Configuration
|
||||||
|
app-basics-user-agent = User Agent
|
||||||
|
app-basics-os = OS
|
||||||
|
app-basics-memory-use = Memory Use
|
||||||
|
app-basics-performance = Performance
|
||||||
|
app-basics-service-workers = Registered Service Workers
|
||||||
|
app-basics-profiles = Profiles
|
||||||
|
app-basics-multi-process-support = Multiprocess Windows
|
||||||
|
app-basics-process-count = Web Content Processes
|
||||||
|
app-basics-enterprise-policies = Enterprise Policies
|
||||||
|
app-basics-key-google = Google Key
|
||||||
|
app-basics-key-mozilla = Mozilla Location Service Key
|
||||||
|
app-basics-safe-mode = Safe Mode
|
||||||
|
show-dir-label =
|
||||||
|
{ PLATFORM() ->
|
||||||
|
[macos] Show in Finder
|
||||||
|
[windows] Open Folder
|
||||||
|
*[other] Open Directory
|
||||||
|
}
|
||||||
|
modified-key-prefs-title = Important Modified Preferences
|
||||||
|
modified-prefs-name = Name
|
||||||
|
modified-prefs-value = Value
|
||||||
|
user-js-title = user.js Preferences
|
||||||
|
user-js-description = Your profile folder contains a <a data-l10n-name="user-js-link">user.js file</a>, which includes preferences that were not created by { -brand-short-name }.
|
||||||
|
locked-key-prefs-title = Important Locked Preferences
|
||||||
|
locked-prefs-name = Name
|
||||||
|
locked-prefs-value = Value
|
||||||
|
graphics-title = Graphics
|
||||||
|
graphics-features-title = Features
|
||||||
|
graphics-diagnostics-title = Diagnostics
|
||||||
|
graphics-failure-log-title = Failure Log
|
||||||
|
graphics-gpu1-title = GPU #1
|
||||||
|
graphics-gpu2-title = GPU #2
|
||||||
|
graphics-decision-log-title = Decision Log
|
||||||
|
graphics-crash-guards-title = Crash Guard Disabled Features
|
||||||
|
graphics-workarounds-title = Workarounds
|
||||||
|
place-database-title = Places Database
|
||||||
|
place-database-integrity = Integrity
|
||||||
|
place-database-verify-integrity = Verify Integrity
|
||||||
|
js-title = JavaScript
|
||||||
|
js-incremental-gc = Incremental GC
|
||||||
|
a11y-title = Accessibility
|
||||||
|
a11y-activated = Activated
|
||||||
|
a11y-force-disabled = Prevent Accessibility
|
||||||
|
a11y-handler-used = Accessible Handler Used
|
||||||
|
a11y-instantiator = Accessibility Instantiator
|
||||||
|
library-version-title = Library Versions
|
||||||
|
copy-text-to-clipboard-label = Copy text to clipboard
|
||||||
|
copy-raw-data-to-clipboard-label = Copy raw data to clipboard
|
||||||
|
sandbox-title = Sandbox
|
||||||
|
sandbox-sys-call-log-title = Rejected System Calls
|
||||||
|
sandbox-sys-call-index = #
|
||||||
|
sandbox-sys-call-age = Seconds Ago
|
||||||
|
sandbox-sys-call-pid = PID
|
||||||
|
sandbox-sys-call-tid = TID
|
||||||
|
sandbox-sys-call-proc-type = Process Type
|
||||||
|
sandbox-sys-call-number = Syscall
|
||||||
|
sandbox-sys-call-args = Arguments
|
||||||
|
safe-mode-title = Try Safe Mode
|
||||||
|
restart-in-safe-mode-label = Restart with Add-ons Disabled…
|
||||||
|
media-title = Media
|
||||||
|
media-output-devices-title = Output Devices
|
||||||
|
media-input-devices-title = Input Devices
|
||||||
|
media-device-name = Name
|
||||||
|
media-device-group = Group
|
||||||
|
media-device-vendor = Vendor
|
||||||
|
media-device-state = State
|
||||||
|
media-device-preferred = Preferred
|
||||||
|
media-device-format = Format
|
||||||
|
media-device-channels = Channels
|
||||||
|
media-device-rate = Rate
|
||||||
|
media-device-latency = Latency
|
||||||
|
intl-title = Internationalization & Localization
|
||||||
|
intl-app-title = Application Settings
|
||||||
|
intl-locales-requested = Requested Locales
|
||||||
|
intl-locales-available = Available Locales
|
||||||
|
intl-locales-supported = App Locales
|
||||||
|
intl-locales-default = Default Locale
|
||||||
|
intl-os-title = Operating System
|
||||||
|
intl-os-prefs-system-locales = System Locales
|
||||||
|
intl-regional-prefs = Regional Preferences
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $days (Integer) - Number of days of crashes to log
|
||||||
|
report-crash-for-days =
|
||||||
|
{ $days ->
|
||||||
|
[one] Crash Reports for the Last { $days } Day
|
||||||
|
*[other] Crash Reports for the Last { $days } Days
|
||||||
|
}
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $minutes (integer) - Number of minutes since crash
|
||||||
|
crashes-time-minutes =
|
||||||
|
{ $minutes ->
|
||||||
|
[one] { $minutes } minute ago
|
||||||
|
*[other] { $minutes } minutes ago
|
||||||
|
}
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $hours (integer) - Number of hours since crash
|
||||||
|
crashes-time-hours =
|
||||||
|
{ $hours ->
|
||||||
|
[one] { $hours } hour ago
|
||||||
|
*[other] { $hours } hours ago
|
||||||
|
}
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $days (integer) - Number of days since crash
|
||||||
|
crashes-time-days =
|
||||||
|
{ $days ->
|
||||||
|
[one] { $days } day ago
|
||||||
|
*[other] { $days } days ago
|
||||||
|
}
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $reports (integer) - Number of pending reports
|
||||||
|
pending-reports =
|
||||||
|
{ $reports ->
|
||||||
|
[one] All Crash Reports (including { $reports } pending crash in the given time range)
|
||||||
|
*[other] All Crash Reports (including { $reports } pending crashes in the given time range)
|
||||||
|
}
|
||||||
|
|
||||||
|
raw-data-copied = Raw data copied to clipboard
|
||||||
|
text-copied = Text copied to clipboard
|
||||||
|
|
||||||
|
# "ClearType" is a proper noun and should not be translated. Feel free to leave English strings if
|
||||||
|
# there are no good translations, these are only used in about:support
|
||||||
|
clear-type-parameters = ClearType Parameters
|
||||||
|
|
||||||
|
compositing = Compositing
|
||||||
|
hardware-h264 = Hardware H264 Decoding
|
||||||
|
main-thread-no-omtc = main thread, no OMTC
|
||||||
|
yes = Yes
|
||||||
|
no = No
|
||||||
|
|
||||||
|
## The following strings indicate if an API key has been found.
|
||||||
|
## In some development versions, it's expected for some API keys that they are
|
||||||
|
## not found.
|
||||||
|
found = Found
|
||||||
|
missing = Missing
|
||||||
|
|
||||||
|
gpu-description = Description
|
||||||
|
gpu-vendor-id = Vendor ID
|
||||||
|
gpu-device-id = Device ID
|
||||||
|
gpu-subsys-id = Subsys ID
|
||||||
|
gpu-drivers = Drivers
|
||||||
|
gpu-ram = RAM
|
||||||
|
gpu-driver-version = Driver Version
|
||||||
|
gpu-driver-date = Driver Date
|
||||||
|
gpu-active = Active
|
||||||
|
webgl1-wsiinfo = WebGL 1 Driver WSI Info
|
||||||
|
webgl1-renderer = WebGL 1 Driver Renderer
|
||||||
|
webgl1-version = WebGL 1 Driver Version
|
||||||
|
webgl1-driver-extensions = WebGL 1 Driver Extensions
|
||||||
|
webgl1-extensions = WebGL 1 Extensions
|
||||||
|
webgl2-wsiinfo = WebGL 2 Driver WSI Info
|
||||||
|
webgl2-renderer = WebGL 2 Driver Renderer
|
||||||
|
webgl2-version = WebGL 2 Driver Version
|
||||||
|
webgl2-driver-extensions = WebGL 2 Driver Extensions
|
||||||
|
webgl2-extensions = WebGL 2 Extensions
|
||||||
|
blocklisted-bug = Blocklisted due to known issues
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $bugNumber (string) - String of bug number from Bugzilla
|
||||||
|
bug-link = bug { $bugNumber }
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $failureCode (string) - String that can be searched in the source tree.
|
||||||
|
unknown-failure = Blocklisted; failure code { $failureCode }
|
||||||
|
|
||||||
|
d3d11layers-crash-guard = D3D11 Compositor
|
||||||
|
d3d11video-crash-guard = D3D11 Video Decoder
|
||||||
|
d3d9video-crash-buard = D3D9 Video Decoder
|
||||||
|
glcontext-crash-guard = OpenGL
|
||||||
|
|
||||||
|
reset-on-next-restart = Reset on Next Restart
|
||||||
|
gpu-process-kill-button = Terminate GPU Process
|
||||||
|
gpu-device-reset-button = Trigger Device Reset
|
||||||
|
uses-tiling = Uses Tiling
|
||||||
|
content-uses-tiling = Uses Tiling (Content)
|
||||||
|
off-main-thread-paint-enabled = Off Main Thread Painting Enabled
|
||||||
|
off-main-thread-paint-worker-count = Off Main Thread Painting Worker Count
|
||||||
|
|
||||||
|
audio-backend = Audio Backend
|
||||||
|
max-audio-channels = Max Channels
|
||||||
|
channel-layout = Preferred Channel Layout
|
||||||
|
sample-rate = Preferred Sample Rate
|
||||||
|
|
||||||
|
min-lib-versions = Expected minimum version
|
||||||
|
loaded-lib-versions = Version in use
|
||||||
|
|
||||||
|
has-seccomp-bpf = Seccomp-BPF (System Call Filtering)
|
||||||
|
has-seccomp-tsync = Seccomp Thread Synchronization
|
||||||
|
has-user-namespaces = User Namespaces
|
||||||
|
has-privileged-user-namespaces = User Namespaces for privileged processes
|
||||||
|
can-sandbox-content = Content Process Sandboxing
|
||||||
|
can-sandbox-media = Media Plugin Sandboxing
|
||||||
|
content-sandbox-level = Content Process Sandbox Level
|
||||||
|
effective-content-sandbox-level = Effective Content Process Sandbox Level
|
||||||
|
sandbox-proc-type-content = content
|
||||||
|
sandbox-proc-type-file = file content
|
||||||
|
sandbox-proc-type-media-plugin = media plugin
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# $remoteWindows (integer) - Number of remote windows
|
||||||
|
# $totalWindows (integer) - Number of total windows
|
||||||
|
multi-process-windows = { $remoteWindows }/{ $totalWindows }
|
||||||
|
multi-process-status-0 = Enabled by user
|
||||||
|
multi-process-status-1 = Enabled by default
|
||||||
|
multi-process-status-2 = Disabled
|
||||||
|
multi-process-status-4 = Disabled by accessibility tools
|
||||||
|
multi-process-status-6 = Disabled by unsupported text input
|
||||||
|
multi-process-status-7 = Disabled by add-ons
|
||||||
|
multi-process-status-8 = Disabled forcibly
|
||||||
|
multi-process-status-unknown = Unknown status
|
||||||
|
|
||||||
|
async-pan-zoom = Asynchronous Pan/Zoom
|
||||||
|
apz-none = none
|
||||||
|
wheel-enabled = wheel input enabled
|
||||||
|
touch-enabled = touch input enabled
|
||||||
|
drag-enabled = scrollbar drag enabled
|
||||||
|
keyboard-enabled = keyboard enabled
|
||||||
|
autoscroll-enabled = autoscroll enabled
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
## $preferenceKey (string) - String ID of preference
|
||||||
|
wheel-warning = async wheel input disabled due to unsupported pref: { $preferenceKey }
|
||||||
|
touch-warning = async touch input disabled due to unsupported pref: { $preferenceKey }
|
||||||
|
|
||||||
|
## Strings representing the status of the Enterprise Policies engine.
|
||||||
|
policies-inactive = Inactive
|
||||||
|
policies-active = Active
|
||||||
|
policies-error = Error
|
|
@ -12,7 +12,6 @@
|
||||||
locale/@AB_CD@/global/aboutReader.properties (%chrome/global/aboutReader.properties)
|
locale/@AB_CD@/global/aboutReader.properties (%chrome/global/aboutReader.properties)
|
||||||
locale/@AB_CD@/global/aboutRights.dtd (%chrome/global/aboutRights.dtd)
|
locale/@AB_CD@/global/aboutRights.dtd (%chrome/global/aboutRights.dtd)
|
||||||
locale/@AB_CD@/global/aboutStudies.properties (%chrome/global/aboutStudies.properties)
|
locale/@AB_CD@/global/aboutStudies.properties (%chrome/global/aboutStudies.properties)
|
||||||
locale/@AB_CD@/global/aboutSupport.dtd (%chrome/global/aboutSupport.dtd)
|
|
||||||
locale/@AB_CD@/global/aboutSupport.properties (%chrome/global/aboutSupport.properties)
|
locale/@AB_CD@/global/aboutSupport.properties (%chrome/global/aboutSupport.properties)
|
||||||
locale/@AB_CD@/global/aboutTelemetry.dtd (%chrome/global/aboutTelemetry.dtd)
|
locale/@AB_CD@/global/aboutTelemetry.dtd (%chrome/global/aboutTelemetry.dtd)
|
||||||
locale/@AB_CD@/global/aboutTelemetry.properties (%chrome/global/aboutTelemetry.properties)
|
locale/@AB_CD@/global/aboutTelemetry.properties (%chrome/global/aboutTelemetry.properties)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче