diff --git a/intl/locale/metrics.yaml b/intl/locale/metrics.yaml new file mode 100644 index 000000000000..3eccf76c65cf --- /dev/null +++ b/intl/locale/metrics.yaml @@ -0,0 +1,102 @@ +# 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/. + +# Adding a new metric? We have docs for that! +# https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/new_definitions_file.html + +--- +$schema: moz://mozilla.org/schemas/glean/metrics/2-0-0 +$tags: + - 'Core :: Internationalization' + +intl: + requested_locales: + type: string_list + lifetime: application + description: | + The Locales that are being requested. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never + + available_locales: + type: string_list + lifetime: application + description: | + The Locales that are available for use. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never + + app_locales: + type: string_list + lifetime: application + description: | + The negotiated Locales that are being used. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never + + system_locales: + type: string_list + lifetime: application + description: | + The Locales for the OS. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never + + regional_prefs_locales: + type: string_list + lifetime: application + description: | + The regional preferences for the OS. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never + + accept_languages: + type: string_list + lifetime: application + description: | + The languages for the Accept-Languages header. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950394 + data_sensitivity: + - technical + notification_emails: + - flod@mozilla.com + expires: never diff --git a/security/sandbox/metrics.yaml b/security/sandbox/metrics.yaml index 3452bbd737cc..cf87e2d6d419 100644 --- a/security/sandbox/metrics.yaml +++ b/security/sandbox/metrics.yaml @@ -78,3 +78,39 @@ sandbox: - alissy@mozilla.com expires: 145 telemetry_mirror: h#SANDBOX_HAS_USER_NAMESPACES + + effective_content_process_level: + type: quantity + unit: level + lifetime: application + description: | + The current sandbox level. + The "security.sandbox.content.level" preference rounded up to the current minimum allowed level. + 0 if `MOZ_DISABLE_CONTENT_SANDBOX` is set. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950398 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950398 + data_sensitivity: + - technical + notification_emails: + - bowen@mozilla.com + expires: never + + content_win32k_lockdown_state: + type: quantity + unit: lockdown state + lifetime: application + description: | + The current win32k.sys lockdown state. + Possible values are defined in the ContentWin32kLockdownState enum. + Reported even on non-Windows machines. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950398 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950398 + data_sensitivity: + - technical + notification_emails: + - bowen@mozilla.com + expires: never diff --git a/services/fxaccounts/metrics.yaml b/services/fxaccounts/metrics.yaml index 7da7db48f288..e70d92f9faa8 100644 --- a/services/fxaccounts/metrics.yaml +++ b/services/fxaccounts/metrics.yaml @@ -88,3 +88,34 @@ fxa: expires: never extra_keys: *fxa_connect_extra telemetry_mirror: Fxa_Disconnect_Account + + sync_enabled: + type: boolean + lifetime: application + description: | + Whether the weave service is present and enabled. + Implies `fxa.account_enabled`. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950399 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950399 + data_sensitivity: + - technical + notification_emails: + - sync-dev@mozilla.org + expires: never + + account_enabled: + type: boolean + lifetime: application + description: | + Whether the user's logged in to an FxA account. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950399 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950399 + data_sensitivity: + - technical + notification_emails: + - sync-dev@mozilla.org + expires: never diff --git a/toolkit/components/glean/metrics_index.py b/toolkit/components/glean/metrics_index.py index e1a63afd319d..89c3c4ef03ff 100644 --- a/toolkit/components/glean/metrics_index.py +++ b/toolkit/components/glean/metrics_index.py @@ -49,6 +49,7 @@ gecko_metrics = [ "extensions/permissions/metrics.yaml", "gfx/metrics.yaml", "image/decoders/metrics.yaml", + "intl/locale/metrics.yaml", "ipc/metrics.yaml", "js/xpconnect/metrics.yaml", "layout/base/metrics.yaml", diff --git a/toolkit/components/telemetry/app/TelemetryEnvironment.sys.mjs b/toolkit/components/telemetry/app/TelemetryEnvironment.sys.mjs index 14cd59ed75a0..98bf1d3c8077 100644 --- a/toolkit/components/telemetry/app/TelemetryEnvironment.sys.mjs +++ b/toolkit/components/telemetry/app/TelemetryEnvironment.sys.mjs @@ -82,8 +82,8 @@ export var Policy = { var gActiveExperimentStartupBuffer = new Map(); // For Powering arewegleanyet.com (See bug 1944592) -// Legacy Count: 114 -// Glean Count: 54 +// Legacy Count: 118 +// Glean Count: 117 var gGlobalEnvironment; function getGlobal() { @@ -479,7 +479,7 @@ function getRegionalPrefsLocales() { } function getIntlSettings() { - return { + let intl = { requestedLocales: Services.locale.requestedLocales, availableLocales: Services.locale.availableLocales, appLocales: Services.locale.appLocalesAsBCP47, @@ -490,6 +490,13 @@ function getIntlSettings() { .data.split(",") .map(str => str.trim()), }; + Glean.intl.requestedLocales.set(intl.requestedLocales); + Glean.intl.availableLocales.set(intl.availableLocales); + Glean.intl.appLocales.set(intl.appLocales); + Glean.intl.systemLocales.set(intl.systemLocales); + Glean.intl.regionalPrefsLocales.set(intl.regionalPrefsLocales); + Glean.intl.acceptLanguages.set(intl.acceptLanguages); + return intl; } /** @@ -1109,6 +1116,15 @@ EnvironmentCache.prototype = { if (AppConstants.platform == "win") { this._hddData = await Services.sysinfo.diskInfo; + for (const [name, disk] of Object.entries(this._hddData)) { + if (!disk) { + continue; + } + // Glean `object` metrics don't like `type` as it's a reserved word. + let diskData = { ...disk, diskType: disk.type }; + delete diskData.type; + Glean.hdd[name].set(diskData); + } let osData = await Services.sysinfo.osInfo; if (!this._initTask) { @@ -1133,6 +1149,8 @@ EnvironmentCache.prototype = { this._currentEnvironment.system.isWow64 = this._getProcessData().isWow64; this._currentEnvironment.system.isWowARM64 = this._getProcessData().isWowARM64; + Glean.system.isWow64.set(this._currentEnvironment.system.isWow64); + Glean.system.isWowArm64.set(this._currentEnvironment.system.isWowARM64); } if (!this._initTask) { @@ -1465,9 +1483,15 @@ EnvironmentCache.prototype = { break; case AUTO_UPDATE_PREF_CHANGE_TOPIC: this._currentEnvironment.settings.update.autoDownload = aData == "true"; + Glean.updateSettings.autoDownload.set( + this._currentEnvironment.settings.update.autoDownload + ); break; case BACKGROUND_UPDATE_PREF_CHANGE_TOPIC: this._currentEnvironment.settings.update.background = aData == "true"; + Glean.updateSettings.background.set( + this._currentEnvironment.settings.update.background + ); break; case SERVICES_INFO_CHANGE_TOPIC: this._updateServicesInfo(); @@ -1669,6 +1693,10 @@ EnvironmentCache.prototype = { userPrefs: this._getPrefData(), sandbox: this._getSandboxData(), }; + Glean.updateSettings.channel.set(updateChannel); + Glean.updateSettings.enabled.set( + this._currentEnvironment.settings.update.enabled + ); // Services.appinfo.launcherProcessState is not available in all build // configurations, in which case an exception may be thrown. @@ -1728,6 +1756,14 @@ EnvironmentCache.prototype = { // enum in security/sandbox/common/SandboxSettings.h contentWin32kLockdownState = sandboxSettings.contentWin32kLockdownState; } catch (e) {} + if (effectiveContentProcessLevel !== null) { + Glean.sandbox.effectiveContentProcessLevel.set( + effectiveContentProcessLevel + ); + } + if (contentWin32kLockdownState !== null) { + Glean.sandbox.contentWin32kLockdownState.set(contentWin32kLockdownState); + } return { effectiveContentProcessLevel, contentWin32kLockdownState, @@ -1748,17 +1784,27 @@ EnvironmentCache.prototype = { this._currentEnvironment.profile.creationDate = Utils.millisecondsToDays(creationDate); + Glean.profiles.creationDate.set( + this._currentEnvironment.profile.creationDate + ); if (resetDate) { this._currentEnvironment.profile.resetDate = Utils.millisecondsToDays(resetDate); + Glean.profiles.resetDate.set(this._currentEnvironment.profile.resetDate); } if (firstUseDate) { this._currentEnvironment.profile.firstUseDate = Utils.millisecondsToDays(firstUseDate); + Glean.profiles.firstUseDate.set( + this._currentEnvironment.profile.firstUseDate + ); } if (recoveredFromBackup) { this._currentEnvironment.profile.recoveredFromBackup = Utils.millisecondsToDays(recoveredFromBackup); + Glean.profiles.recoveredFromBackup.set( + this._currentEnvironment.profile.recoveredFromBackup + ); } }, @@ -1847,10 +1893,12 @@ EnvironmentCache.prototype = { if (this._updateAutoDownloadCache !== undefined) { this._currentEnvironment.settings.update.autoDownload = this._updateAutoDownloadCache; + Glean.updateSettings.autoDownload.set(this._updateAutoDownloadCache); } if (this._updateBackgroundCache !== undefined) { this._currentEnvironment.settings.update.background = this._updateBackgroundCache; + Glean.updateSettings.background.set(this._updateBackgroundCache); } }, @@ -1899,6 +1947,8 @@ EnvironmentCache.prototype = { accountEnabled, syncEnabled, }; + Glean.fxa.syncEnabled.set(syncEnabled); + Glean.fxa.accountEnabled.set(accountEnabled); }, /** @@ -1977,6 +2027,8 @@ EnvironmentCache.prototype = { this._cpuData.extensions = availableExts; + Glean.systemCpu.extensions.set(availableExts); + return this._cpuData; }, @@ -2006,6 +2058,9 @@ EnvironmentCache.prototype = { version: forceToStringOrNull(getSysinfoProperty("version", null)), locale: forceToStringOrNull(getSystemLocale()), }; + Glean.systemOs.name.set(this._osData.name); + Glean.systemOs.version.set(this._osData.version); + Glean.systemOs.locale.set(this._osData.locale); if (AppConstants.platform == "android") { this._osData.kernelVersion = forceToStringOrNull( @@ -2018,6 +2073,8 @@ EnvironmentCache.prototype = { this._osData.distroVersion = forceToStringOrNull( getSysinfoProperty("distroVersion", null) ); + Glean.systemOs.distro.set(this._osData.distro); + Glean.systemOs.distroVersion.set(this._osData.distroVersion); } else if (AppConstants.platform === "win") { // The path to the "UBR" key, queried to get additional version details on Windows. const WINDOWS_UBR_KEY_PATH = @@ -2027,6 +2084,9 @@ EnvironmentCache.prototype = { this._osData.servicePackMajor = versionInfo.servicePackMajor; this._osData.servicePackMinor = versionInfo.servicePackMinor; this._osData.windowsBuildNumber = versionInfo.buildNumber; + Glean.systemOs.servicePackMajor.set(this._osData.servicePackMajor); + Glean.systemOs.servicePackMinor.set(this._osData.servicePackMinor); + Glean.systemOs.windowsBuildNumber.set(this._osData.windowsBuildNumber); // We only need the UBR if we're at or above Windows 10. if ( typeof this._osData.version === "string" && @@ -2040,6 +2100,9 @@ EnvironmentCache.prototype = { "UBR", Ci.nsIWindowsRegKey.WOW64_64 ); + if (Number.isInteger(ubr)) { + Glean.systemOs.windowsUbr.set(ubr); + } this._osData.windowsUBR = ubr !== undefined ? ubr : null; } } @@ -2078,6 +2141,7 @@ EnvironmentCache.prototype = { for (let [inKey, outKey] of keys) { let prop = getSysinfoProperty(inKey, null); if (prop) { + Glean.windowsSecurity[outKey].set(prop.split(";")); prop = limitStringToLength(prop, maxStringLength).split(";"); } @@ -2104,11 +2168,42 @@ EnvironmentCache.prototype = { monitors: [], features: {}, }; + if (gfxData.D2DEnabled !== null) { + Glean.gfx.d2dEnabled.set(gfxData.D2DEnabled); + } + if (gfxData.DWriteEnabled !== null) { + Glean.gfx.dwriteEnabled.set(gfxData.DWriteEnabled); + } + if (gfxData.ContentBackend !== null) { + Glean.gfx.contentBackend.set(gfxData.ContentBackend); + } + if (gfxData.Headless !== null) { + Glean.gfx.headless.set(gfxData.Headless); + } + if (gfxData.TargetFrameRate !== null) { + Glean.gfx.targetFrameRate.set(gfxData.TargetFrameRate); + } + if (gfxData.textScaleFactor !== null) { + Glean.gfx.textScaleFactor.set(gfxData.textScaleFactor); + } if (AppConstants.platform !== "android") { let gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); try { gfxData.monitors = gfxInfo.getMonitors(); + // Special handling because floats need to become strings. + let monitors = gfxInfo.getMonitors(); + for (let monitor of monitors) { + if ("defaultCSSScaleFactor" in monitor) { + monitor.defaultCSSScaleFactor = + monitor.defaultCSSScaleFactor.toString(); + } + if ("contentsScaleFactor" in monitor) { + monitor.contentsScaleFactor = + monitor.contentsScaleFactor.toString(); + } + } + Glean.gfx.monitors.set(monitors); } catch (e) { this._log.error("nsIGfxInfo.getMonitors() caught error", e); } @@ -2117,6 +2212,9 @@ EnvironmentCache.prototype = { try { let gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); gfxData.features = gfxInfo.getFeatures(); + for (const [name, value] of Object.entries(gfxData.features)) { + Glean.gfxFeatures[name].set(value); + } } catch (e) { this._log.error("nsIGfxInfo.getFeatures() caught error", e); } @@ -2129,6 +2227,7 @@ EnvironmentCache.prototype = { let hasGPU2 = getGfxField("adapterDeviceID2", null) !== null; if (!hasGPU2) { this._log.trace("_getGFXData - Only one display adapter detected."); + Glean.gfx.adapters.set(gfxData.adapters); return gfxData; } @@ -2137,6 +2236,8 @@ EnvironmentCache.prototype = { gfxData.adapters.push(getGfxAdapter("2")); gfxData.adapters[1].GPUActive = getGfxField("isGPU2Active", null); + Glean.gfx.adapters.set(gfxData.adapters); + return gfxData; }, @@ -2150,6 +2251,7 @@ EnvironmentCache.prototype = { // Send RAM size in megabytes. Rounding because sysinfo doesn't // always provide RAM in multiples of 1024. memoryMB = Math.round(memoryMB / 1024 / 1024); + Glean.system.memory.set(memoryMB); } let virtualMB = getSysinfoProperty("virtualmemsize", null); @@ -2157,6 +2259,7 @@ EnvironmentCache.prototype = { // Send the total virtual memory size in megabytes. Rounding because // sysinfo doesn't always provide RAM in multiples of 1024. virtualMB = Math.round(virtualMB / 1024 / 1024); + Glean.system.virtualMemory.set(virtualMB); } let data = { @@ -2169,6 +2272,10 @@ EnvironmentCache.prototype = { appleModelId: getSysinfoProperty("appleModelId", null), hasWinPackageId: getSysinfoProperty("hasWinPackageId", null), }; + Glean.system.appleModelId.set(data.appleModelId); + if (data.hasWinPackageId !== null) { + Glean.system.hasWinPackageId.set(data.hasWinPackageId); + } if (AppConstants.platform === "win") { // This is only sent for Mozilla produced MSIX packages @@ -2178,8 +2285,11 @@ EnvironmentCache.prototype = { winPackageFamilyName.startsWith("MozillaCorporation.") ) { data = { winPackageFamilyName, ...data }; + Glean.system.winPackageFamilyName.set(winPackageFamilyName); } data = { ...this._getProcessData(), ...data }; + Glean.system.isWow64.set(data.isWow64); + Glean.system.isWowArm64.set(data.isWowARM64); data.sec = this._getSecurityAppData(); } diff --git a/toolkit/components/telemetry/docs/data/environment.rst b/toolkit/components/telemetry/docs/data/environment.rst index 39c86cc36dcd..77153e94c0c4 100644 --- a/toolkit/components/telemetry/docs/data/environment.rst +++ b/toolkit/components/telemetry/docs/data/environment.rst @@ -149,10 +149,7 @@ Structure: servicePackMinor: , // windows only or null on failure windowsBuildNumber: , // windows only or null on failure windowsUBR: , // windows 10 only or null on failure - installYear: , // windows only or null on failure locale: , // "en" or null on failure - hasPrefetch: , // windows only, or null on failure - hasSuperfetch: , // windows only, or null on failure distro: , // linux only, or null on failure distroVersion: , // linux only, or null on failure }, @@ -251,7 +248,7 @@ Structure: }, }, appleModelId: , // Mac only or null on failure - sec: { // This feature is Windows 8+ only + sec: { // This feature is Windows only antivirus: [ , ... ], // null if unavailable on platform: Product name(s) of registered antivirus programs antispyware: [ , ... ], // null if unavailable on platform: Product name(s) of registered antispyware programs firewall: [ , ... ], // null if unavailable on platform: Product name(s) of registered firewall programs diff --git a/toolkit/components/telemetry/tests/unit/TelemetryEnvironmentTesting.sys.mjs b/toolkit/components/telemetry/tests/unit/TelemetryEnvironmentTesting.sys.mjs index b344f60ba270..b684b5c20928 100644 --- a/toolkit/components/telemetry/tests/unit/TelemetryEnvironmentTesting.sys.mjs +++ b/toolkit/components/telemetry/tests/unit/TelemetryEnvironmentTesting.sys.mjs @@ -340,6 +340,22 @@ export var TelemetryEnvironmentTesting = { lazy.Assert.equal(typeof update.enabled, "boolean"); lazy.Assert.equal(typeof update.autoDownload, "boolean"); lazy.Assert.equal(typeof update.background, "boolean"); + lazy.Assert.equal( + update.channel, + Glean.updateSettings.channel.testGetValue() + ); + lazy.Assert.equal( + update.enabled, + Glean.updateSettings.enabled.testGetValue() + ); + lazy.Assert.equal( + update.autoDownload, + Glean.updateSettings.autoDownload.testGetValue() + ); + lazy.Assert.equal( + update.background, + Glean.updateSettings.background.testGetValue() + ); // Check sandbox settings exist and make sense if (data.settings.sandbox.effectiveContentProcessLevel !== null) { @@ -348,6 +364,10 @@ export var TelemetryEnvironmentTesting = { "number", "sandbox.effectiveContentProcessLevel must have the correct type" ); + lazy.Assert.equal( + data.settings.sandbox.effectiveContentProcessLevel, + Glean.sandbox.effectiveContentProcessLevel.testGetValue() + ); } if (data.settings.sandbox.contentWin32kLockdownState !== null) { @@ -360,6 +380,11 @@ export var TelemetryEnvironmentTesting = { let win32kLockdownState = data.settings.sandbox.contentWin32kLockdownState; lazy.Assert.ok(win32kLockdownState >= 1 && win32kLockdownState <= 17); + + lazy.Assert.equal( + win32kLockdownState, + Glean.sandbox.contentWin32kLockdownState.testGetValue() + ); } // Check "defaultSearchEngine" separately, as it can either be undefined or string. @@ -406,6 +431,7 @@ export var TelemetryEnvironmentTesting = { for (let field of fields) { lazy.Assert.ok(Array.isArray(intl[field]), `${field} is an array`); + lazy.Assert.deepEqual(intl[field], Glean.intl[field].testGetValue()); } // These fields may be null if they aren't ready yet. This is mostly to deal @@ -416,6 +442,7 @@ export var TelemetryEnvironmentTesting = { let isArray = Array.isArray(intl[field]); let isNull = intl[field] === null; lazy.Assert.ok(isArray || isNull, `${field} is an array or null`); + lazy.Assert.deepEqual(intl[field], Glean.intl[field].testGetValue()); } }, @@ -440,6 +467,22 @@ export var TelemetryEnvironmentTesting = { data.profile.recoveredFromBackup, truncateToDays(PROFILE_RECOVERED_FROM_BACKUP) ); + lazy.Assert.equal( + data.profile.creationDate, + Glean.profiles.creationDate.testGetValue() + ); + lazy.Assert.equal( + data.profile.resetDate, + Glean.profiles.resetDate.testGetValue() + ); + lazy.Assert.equal( + data.profile.firstUseDate, + Glean.profiles.firstUseDate.testGetValue() + ); + lazy.Assert.equal( + data.profile.recoveredFromBackup, + Glean.profiles.recoveredFromBackup.testGetValue() + ); }, checkPartnerSection(data, isInitial) { @@ -546,6 +589,7 @@ export var TelemetryEnvironmentTesting = { Number.isFinite(data.system.memoryMB), "MemoryMB must be a number." ); + lazy.Assert.equal(data.system.memoryMB, Glean.system.memory.testGetValue()); if (assertProcessData) { if (gIsWindows || gIsMac || gIsLinux) { @@ -601,6 +645,28 @@ export var TelemetryEnvironmentTesting = { Number.isFinite(data.system.virtualMaxMB), "virtualMaxMB must be a number." ); + lazy.Assert.equal( + data.system.isWow64, + Glean.system.isWow64.testGetValue() + ); + lazy.Assert.equal( + data.system.isWowARM64, + Glean.system.isWowArm64.testGetValue() + ); + lazy.Assert.equal( + data.system.hasWinPackageId, + Glean.system.hasWinPackageId.testGetValue() + ); + if (data.system.winPackageFamilyName) { + lazy.Assert.equal( + data.system.winPackageFamilyName, + Glean.system.winPackageFamilyName.testGetValue() + ); + } + lazy.Assert.equal( + data.system.virtualMaxMB, + Glean.system.virtualMemory.testGetValue() + ); for (let f of [ "count", @@ -652,11 +718,24 @@ export var TelemetryEnvironmentTesting = { Array.isArray(cpuData.extensions), "CPU extensions must be available." ); + lazy.Assert.deepEqual( + cpuData.extensions, + Glean.systemCpu.extensions.testGetValue() + ); let osData = data.system.os; lazy.Assert.ok(this.checkNullOrString(osData.name)); lazy.Assert.ok(this.checkNullOrString(osData.version)); lazy.Assert.ok(this.checkNullOrString(osData.locale)); + if (osData.name !== null) { + lazy.Assert.equal(osData.name, Glean.systemOs.name.testGetValue()); + } + if (osData.version !== null) { + lazy.Assert.equal(osData.version, Glean.systemOs.version.testGetValue()); + } + if (osData.locale !== null) { + lazy.Assert.equal(osData.locale, Glean.systemOs.locale.testGetValue()); + } // Service pack is only available on Windows. if (gIsWindows) { @@ -668,12 +747,24 @@ export var TelemetryEnvironmentTesting = { Number.isFinite(osData.servicePackMinor), "ServicePackMinor must be a number." ); + lazy.Assert.equal( + osData.servicePackMajor, + Glean.systemOs.servicePackMajor.testGetValue() + ); + lazy.Assert.equal( + osData.servicePackMinor, + Glean.systemOs.servicePackMinor.testGetValue() + ); if ("windowsBuildNumber" in osData) { // This might not be available on all Windows platforms. lazy.Assert.ok( Number.isFinite(osData.windowsBuildNumber), "windowsBuildNumber must be a number." ); + lazy.Assert.equal( + osData.windowsBuildNumber, + Glean.systemOs.windowsBuildNumber.testGetValue() + ); } if ("windowsUBR" in osData) { // This might not be available on all Windows platforms. @@ -681,25 +772,58 @@ export var TelemetryEnvironmentTesting = { osData.windowsUBR === null || Number.isFinite(osData.windowsUBR), "windowsUBR must be null or a number." ); + lazy.Assert.equal( + osData.windowsUBR, + Glean.systemOs.windowsUbr.testGetValue() + ); } } else if (gIsLinux) { lazy.Assert.ok(this.checkNullOrString(osData.distro)); lazy.Assert.ok(this.checkNullOrString(osData.distroVersion)); + lazy.Assert.equal(osData.distro, Glean.systemOs.distro.testGetValue()); + lazy.Assert.equal( + osData.distroVersion, + Glean.systemOs.distroVersion.testGetValue() + ); } for (let disk of EXPECTED_HDD_FIELDS) { + let diskData = Glean.hdd[disk].testGetValue(); lazy.Assert.ok(this.checkNullOrString(data.system.hdd[disk].model)); lazy.Assert.ok(this.checkNullOrString(data.system.hdd[disk].revision)); lazy.Assert.ok(this.checkNullOrString(data.system.hdd[disk].type)); + if (data.system.hdd[disk].model !== null) { + lazy.Assert.equal(data.system.hdd[disk].model, diskData.model); + } + if (data.system.hdd[disk].revision !== null) { + lazy.Assert.equal(data.system.hdd[disk].revision, diskData.revision); + } + if (data.system.hdd[disk].type !== null) { + lazy.Assert.equal(data.system.hdd[disk].type, diskData.diskType); + } } let gfxData = data.system.gfx; lazy.Assert.ok("D2DEnabled" in gfxData); + lazy.Assert.equal(gfxData.D2DEnabled, Glean.gfx.d2dEnabled.testGetValue()); lazy.Assert.ok("DWriteEnabled" in gfxData); + lazy.Assert.equal( + gfxData.DWriteEnabled, + Glean.gfx.dwriteEnabled.testGetValue() + ); lazy.Assert.ok("Headless" in gfxData); + lazy.Assert.equal(gfxData.Headless, Glean.gfx.headless.testGetValue()); lazy.Assert.ok("TargetFrameRate" in gfxData); lazy.Assert.equal(typeof gfxData.TargetFrameRate, "number"); + lazy.Assert.equal( + gfxData.TargetFrameRate, + Glean.gfx.targetFrameRate.testGetValue() + ); lazy.Assert.ok("textScaleFactor" in gfxData); + lazy.Assert.equal( + gfxData.textScaleFactor, + Glean.gfx.textScaleFactor.testGetValue() + ); if (gIsWindows) { lazy.Assert.equal(typeof gfxData.D2DEnabled, "boolean"); lazy.Assert.equal(typeof gfxData.DWriteEnabled, "boolean"); @@ -718,6 +842,16 @@ export var TelemetryEnvironmentTesting = { gfxData.adapters[0].GPUActive, "The first GFX adapter must be active." ); + const adapters = Glean.gfx.adapters.testGetValue(); + gfxData.adapters.forEach((adapter, index) => { + for (const [k, v] of Object.entries(adapter)) { + if (v === null) { + // Glean doesn't bother with `null`s + continue; + } + lazy.Assert.equal(v, adapters[index][k]); + } + }); lazy.Assert.ok(Array.isArray(gfxData.monitors)); if (gIsWindows || gIsMac || gIsLinux) { @@ -740,12 +874,15 @@ export var TelemetryEnvironmentTesting = { lazy.Assert.equal(typeof gfxData.monitors[0].pseudoDisplay, "boolean"); } } + lazy.Assert.deepEqual(gfxData.monitors, Glean.gfx.monitors.testGetValue()); lazy.Assert.equal(typeof gfxData.features, "object"); lazy.Assert.equal(typeof gfxData.features.compositor, "string"); + lazy.Assert.ok(!!Glean.gfxFeatures.compositor.testGetValue()); lazy.Assert.equal(typeof gfxData.features.gpuProcess, "object"); lazy.Assert.equal(typeof gfxData.features.gpuProcess.status, "string"); + lazy.Assert.ok(!!Glean.gfxFeatures.gpuProcess.testGetValue().status); try { // If we've not got nsIGfxInfoDebug, then this will throw and stop us doing @@ -765,14 +902,25 @@ export var TelemetryEnvironmentTesting = { features.gpuProcess.status, gfxData.features.gpuProcess.status ); - lazy.Assert.equal(features.opengl, gfxData.features.opengl); - lazy.Assert.equal(features.webgl, gfxData.features.webgl); + lazy.Assert.equal( + features.compositor, + Glean.gfxFeatures.compositor.testGetValue() + ); + lazy.Assert.equal( + features.gpuProcess.status, + Glean.gfxFeatures.gpuProcess.testGetValue().status + ); } catch (e) {} if (gIsMac) { lazy.Assert.ok(this.checkString(data.system.appleModelId)); + lazy.Assert.equal( + data.system.appleModelId, + Glean.system.appleModelId.testGetValue() + ); } else { lazy.Assert.ok(this.checkNullOrString(data.system.appleModelId)); + lazy.Assert.equal(null, Glean.system.appleModelId.testGetValue()); } // This feature is only available on Windows @@ -784,6 +932,7 @@ export var TelemetryEnvironmentTesting = { let SEC_FIELDS = ["antivirus", "antispyware", "firewall"]; for (let f of SEC_FIELDS) { + let products = Glean.windowsSecurity[f].testGetValue(); lazy.Assert.ok( f in data.system.sec, f + " must be available under data.system.sec" @@ -797,6 +946,10 @@ export var TelemetryEnvironmentTesting = { ); if (Array.isArray(value)) { for (let product of value) { + // It is posssible that this will fail if either the Legacy or + // Glean string limits are hit. If the Glean string_list limits are + // hit, `testGetValue` above will throw, though. + lazy.Assert.ok(products.includes(product), `${f} data must match.`); lazy.Assert.equal( typeof product, "string", diff --git a/toolkit/mozapps/update/metrics.yaml b/toolkit/mozapps/update/metrics.yaml index 7eac40494d28..e161a06dc106 100644 --- a/toolkit/mozapps/update/metrics.yaml +++ b/toolkit/mozapps/update/metrics.yaml @@ -1501,3 +1501,67 @@ updater: data_sensitivity: - technical expires: never + + +update.settings: + channel: + type: string + lifetime: application + description: | + The update channel according to defaults, + including partner bits. + e.g. "nightly-cck" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_sensitivity: + - technical + notification_emails: + - application-update-telemetry-alerts@mozilla.com + expires: never + + enabled: + type: boolean + lifetime: application + description: | + Whether updates are available. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_sensitivity: + - technical + notification_emails: + - application-update-telemetry-alerts@mozilla.com + expires: never + + auto_download: + type: boolean + lifetime: application + description: | + Whether app updates are set to auto-download. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_sensitivity: + - technical + notification_emails: + - application-update-telemetry-alerts@mozilla.com + expires: never + + background: + type: boolean + lifetime: application + description: | + Whether updates can be delivered in the background. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950397 + data_sensitivity: + - technical + notification_emails: + - application-update-telemetry-alerts@mozilla.com + expires: never diff --git a/toolkit/profile/metrics.yaml b/toolkit/profile/metrics.yaml index be3b18ba8e51..eae036dc64cb 100644 --- a/toolkit/profile/metrics.yaml +++ b/toolkit/profile/metrics.yaml @@ -115,3 +115,83 @@ startup: expires: 147 unit: profiles telemetry_mirror: STARTUP_PROFILE_COUNT + +profiles: + creation_date: + type: quantity + unit: days since Jan 1 1970 + lifetime: application + description: | + The day the profile was created, + as determined by checking various file metadata in the profile directory. + Not considered to be particularly reliable in practice. + Prefer `client_info.first_run_date` in most cases. + e.g. 16446 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_sensitivity: + - technical + notification_emails: + - dtownsend@mozilla.com + expires: never + + reset_date: + type: quantity + unit: days since Jan 1 1970 + lifetime: application + description: | + Optional. + The day the profile was most recently reset, + persisted in `times.json`. + e.g. 16446 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_sensitivity: + - technical + notification_emails: + - dtownsend@mozilla.com + expires: never + + first_use_date: + type: quantity + unit: days since Jan 1 1970 + lifetime: application + description: | + Optional. + The day the profile was first used, + as determined by noticing that `times.json` wasn't present. + Prefer `client_info.first_run_date` in most cases. + e.g. 16446 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_sensitivity: + - technical + notification_emails: + - dtownsend@mozilla.com + expires: never + + recovered_from_backup: + type: quantity + unit: days since Jan 1 1970 + lifetime: application + description: | + Optional. + The day the profile was recovered from backup, + persisted in `times.json`. + e.g. 16446 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950400 + data_sensitivity: + - technical + notification_emails: + - mconley@mozilla.com + - dtownsend@mozilla.com + expires: never diff --git a/widget/metrics.yaml b/widget/metrics.yaml index bb164f9ed4c0..397cbd71ab51 100644 --- a/widget/metrics.yaml +++ b/widget/metrics.yaml @@ -60,3 +60,391 @@ widget: - froydnj@mozilla.com expires: never telemetry_mirror: IDLE_NOTIFY_IDLE_MS + +gfx.features: + compositor: + type: string + lifetime: application + description: | + Layers backend for compositing. + One of "d3d9", "d3d11", "opengl", "basic", or "none". + "none" indicates no compositors have been created. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + d3d11: + type: object + lifetime: application + description: | + (Windows-only) information about the D3D11 compositor. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + * warp - Software rendering (WARP) mode was chosen. + * textureSharing - Whether or not texture sharing works. + * version - The D3D11 device feature level. + * blocklisted - Whether D3D11 is blocklisted; use to see whether WARP + was blacklist induced or driver-failure induced. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_sensitivity: + - technical + structure: + type: object + properties: + status: + type: string + warp: + type: boolean + textureSharing: + type: boolean + version: + type: number + blocklisted: + type: boolean + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + d2d: + type: object + lifetime: application + description: | + (Windows-only) information about the D2D compositor. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + * version - The feature version, either "1.0" or "1.1" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_sensitivity: + - technical + structure: + type: object + properties: + status: + type: string + version: + type: number + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + hw_compositing: &basic_gfx_feature + type: object + lifetime: application + description: | + Information about the hardware acceleration GFX feature. + (i.e. whether we try using the GPU) + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950412 + data_sensitivity: + - technical + structure: + type: object + properties: + status: + type: string + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + gpu_process: + <<: *basic_gfx_feature + description: | + Information about the out-of-process compositing ("GPU Process") GFX feature. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default and it's in use. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + + webrender: + <<: *basic_gfx_feature + description: | + Information about the Webrender GFX feature. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + + wr_compositor: + <<: *basic_gfx_feature + description: | + Information about the native OS compositor (CA, DCamp, etc.). + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + + opengl_compositing: + <<: *basic_gfx_feature + description: | + Information about the OpenGL Compositing GFX feature. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". + + omtp: + <<: *basic_gfx_feature + description: | + Information about the Off Main Thread Painting GFX feature. + * status - One of + * "unused" - This feature has not been requested. + * "unavailable" - Safe Mode or OS restriction prevents use. + * "blocked" - An internal condition (such as safe mode) prevents use. + * "blocklisted" - Blocked due to a blocklist restriction. + * "denied" - Blocked due to allowlist restrictions. + * "disabled" - User explicitly disabled this default feature. + * "failed" - Feature failed to initialize. + * "available" - User has this feature available by default. + optionally including ":" followed by a reason + e.g. "FEATURE_FAILURE_WEBRENDER_VIDEO_CRASH_INTEL_23.20.16.4973". +gfx: + d2d_enabled: + type: boolean + lifetime: application + description: | + Whether Direct2D is enabled. (Windows-only) + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + dwrite_enabled: + type: boolean + lifetime: application + description: | + Whether DirectWrite is enabled. (Windows-only) + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + content_backend: + type: string + lifetime: application + description: | + The content backend (e.g. "Direct2D 1.1", "Skia", "Cairo"). + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + headless: + type: boolean + lifetime: application + description: | + Whether the app's running in headless mode (e.g. via `MOZ_HEADLESS`). + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + target_frame_rate: + type: quantity + unit: hertz + lifetime: application + description: | + The frame rate in Hz, typically 60 or more. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + text_scale_factor: + type: string + lifetime: application + description: | + The text scale factor. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + monitors: + type: object + lifetime: application + description: | + Information about connected monitors. + On Linux only a single monitor is returned for the primary screen. + * screenWidth - Screen width in pixels + * screenHeight - Screen height in pixels + * defaultCSSScaleFactor - The default number of device pixels per unscaled CSS pixel for this screen. + * contentsScaleFactor - The number of device pixels per desktop pixel for this screen. + * refreshRate - (Windows only) The target screen refresh rate, in Hz, or 0 if unknown. + * pseudoDislay - (Windows only) Whether the screen is a pseudo display. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + structure: + type: array + items: + type: object + properties: + screenWidth: + type: number + screenHeight: + type: number + defaultCSSScaleFactor: + type: string + contentsScaleFactor: + type: string + refreshRate: + type: number + pseudoDisplay: + type: boolean + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never + + adapters: + type: object + lifetime: application + description: | + Information about the primary (and secondary, if available) graphics adapter. + * description - e.g. "Intel(R) HD Graphics 4600" + * vendorID - Hex vendor id + * deviceID - Hex device id + * subsysID - Hex subsys id + * RAM - reported RAM in megabytes. + * driver - Platform-specific driver information. + * driverVendor - Driver vendor information. + * driverVersion - Driver version. + * driverDate - Driver date. + * GPUActive - Whether this adapter is active. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950411 + data_sensitivity: + - technical + structure: + type: array + items: + type: object + properties: + description: + type: string + vendorID: + type: string + deviceID: + type: string + subsysID: + type: string + RAM: + type: number + driver: + type: string + driverVendor: + type: string + driverVersion: + type: string + driverDate: + type: string + GPUActive: + type: boolean + notification_emails: + - gfx-telemetry-alerts@mozilla.com + expires: never diff --git a/widget/windows/metrics.yaml b/widget/windows/metrics.yaml index 50bd845e3ba8..c95ba59b6c8a 100644 --- a/widget/windows/metrics.yaml +++ b/widget/windows/metrics.yaml @@ -66,3 +66,49 @@ widget: - jimm@mozilla.com expires: never telemetry_mirror: h#TOUCH_ENABLED_DEVICE + +windows.security: + antivirus: + type: string_list + description: | + Product names of registered antivirus programs. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_sensitivity: + - technical + notification_emails: + - jimm@mozilla.com + expires: never + + antispyware: + type: string_list + description: | + Product names of registered antispyware programs. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_sensitivity: + - technical + notification_emails: + - jimm@mozilla.com + expires: never + + firewall: + type: string_list + description: | + Product names of registered firewall programs. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950415 + data_sensitivity: + - technical + notification_emails: + - jimm@mozilla.com + expires: never diff --git a/xpcom/metrics.yaml b/xpcom/metrics.yaml index 568bb0122cd6..2e892ffd5141 100644 --- a/xpcom/metrics.yaml +++ b/xpcom/metrics.yaml @@ -1172,3 +1172,345 @@ system.cpu: - florian@mozilla.com expires: never unit: megahertz + + extensions: + type: string_list + lifetime: application + description: > + Recognized CPU extensions. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1962547 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1962547 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + +hdd: + profile: &hdd_object + type: object + lifetime: application + description: | + Information about the disk the profile is stored on. + Windows only. + * model - The disk's self-reported model string + * revision - The disk's self-reported revision string + * diskType - Either "HDD" or "SSD" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950410 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950410 + data_sensitivity: + - technical + structure: + type: object + properties: + model: + type: string + revision: + type: string + diskType: + type: string + notification_emails: + - gijs@mozilla.com + expires: never + + binary: + <<: *hdd_object + description: | + Information about the disk the application binary is stored on. + Windows only. + * model - The disk's self-reported model string + * revision - The disk's self-reported revision string + * diskType - Either "HDD" or "SSD" + + system: + <<: *hdd_object + description: | + Information about the disk the system files are stored on. + Windows only. + * model - The disk's self-reported model string + * revision - The disk's self-reported revision string + * diskType - Either "HDD" or "SSD" + +system.os: + name: + type: string + lifetime: application + description: | + The Operating System's name, according to sysinfo. + e.g. "Windows_NT" + Expected in most cases to be identical to `client_info.os`. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + version: + type: string + lifetime: application + description: | + The Operating System's version, according to sysinfo. + e.g. "6.3" + Expected in most cases to be identical to `client_info.os_version`. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + locale: + type: string + lifetime: application + description: | + The Operating System's local, according to ospreferences. + e.g. "en-US" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + distro: + type: string + lifetime: application + description: | + The Operating System's distribution, according to sysinfo. + Linux only. + e.g. "Linuxmint" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + distro_version: + type: string + lifetime: application + description: | + The Operating System's distribution's version, according to sysinfo. + Linux only. + e.g. "22" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + service_pack_major: + type: quantity + unit: version + lifetime: application + description: | + The Windows service pack's major version, according to WindowsVersionInfo. + Windows only. + e.g. 0 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + service_pack_minor: + type: quantity + unit: version + lifetime: application + description: | + The Windows service pack's minor version, according to WindowsVersionInfo. + Windows only. + e.g. 0 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + windows_build_number: + type: quantity + unit: build number + lifetime: application + description: | + The Windows build number, according to WindowsVersionInfo. + Windows only. + e.g. 26100 + Expected in most cases to be identical to `client_info.windows_build_number`. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + windows_ubr: + type: quantity + unit: build number + lifetime: application + description: | + The Windows update build revision number, according to + `SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion`. + Windows only. + e.g. 3775 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950409 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + +system: + memory: + type: quantity + unit: MB + lifetime: application + description: | + The physical memory size in MB (2^20 bytes). + e.g. 32211 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - memshrink-telemetry-alerts@mozilla.com + expires: never + + virtual_memory: + type: quantity + unit: MB + lifetime: application + description: | + The size of the user-mode portion of the virtual address space of the parent process. + Windows only. + e.g. 134217728 + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - memshrink-telemetry-alerts@mozilla.com + expires: never + + is_wow_64: + type: boolean + lifetime: application + description: | + Whether we're in Windows32-on-Windows64 mode. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + is_wow_arm_64: + type: boolean + lifetime: application + description: | + Whether we're in Windows32-on-WindowsForArm64 mode. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + has_win_package_id: + type: boolean + lifetime: application + description: | + Whether the app has a package identity. + Windows only. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - gijs@ozilla.com + expires: never + + win_package_family_name: + type: string + lifetime: application + description: | + The full application package name without any of the components that might change + during the life cycle of the app (such as the version number or the architecture). + Uniquely identifies the application within one Windows installation. + Windows only. + Only included if it begins with "Mozilla." or "MozillaCorporation.". + e.g. "Mozilla.Firefox_n80bbvh6b1yt2" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never + + apple_model_id: + type: string + lifetime: application + description: | + The `hw.model` of the hardware running this software. + Mac only. + e.g. "MacBookPro14,1" + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1950403 + data_sensitivity: + - technical + notification_emails: + - gijs@mozilla.com + expires: never