mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 05:11:16 +00:00
Backed out changeset d07e792e7623 (bug 1811374
) for causing xpcshell failures in test_TelemetryController.js CLOSED TREE
This commit is contained in:
parent
55d4a9cdad
commit
acd8a13933
@ -439,8 +439,6 @@ export let URICountListener = {
|
|||||||
]),
|
]),
|
||||||
};
|
};
|
||||||
|
|
||||||
let gInstallationTelemetryPromise = null;
|
|
||||||
|
|
||||||
export let BrowserUsageTelemetry = {
|
export let BrowserUsageTelemetry = {
|
||||||
/**
|
/**
|
||||||
* This is a policy object used to override behavior for testing.
|
* This is a policy object used to override behavior for testing.
|
||||||
@ -1311,23 +1309,23 @@ export let BrowserUsageTelemetry = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if this is the first run of this profile since installation,
|
* Check if this is the first run of this profile since installation,
|
||||||
* if so then collect installation telemetry.
|
* if so then send installation telemetry.
|
||||||
*
|
*
|
||||||
* @param {nsIFile} [dataPathOverride] Optional, full data file path, for tests.
|
* @param {nsIFile} [dataPathOverride] Optional, full data file path, for tests.
|
||||||
* @param {Array<string>} [msixPackagePrefixes] Optional, list of prefixes to
|
* @param {Array<string>} [msixPackagePrefixes] Optional, list of prefixes to
|
||||||
consider "existing" installs when looking at installed MSIX packages.
|
consider "existing" installs when looking at installed MSIX packages.
|
||||||
Defaults to prefixes for builds produced in Firefox automation.
|
Defaults to prefixes for builds produced in Firefox automation.
|
||||||
* @return {Promise<Object>} A JSON object containing install telemetry.
|
* @return {Promise}
|
||||||
* @resolves When the event has been recorded, or if the data file was not found.
|
* @resolves When the event has been recorded, or if the data file was not found.
|
||||||
* @rejects JavaScript exception on any failure.
|
* @rejects JavaScript exception on any failure.
|
||||||
*/
|
*/
|
||||||
async collectInstallationTelemetry(
|
async reportInstallationTelemetry(
|
||||||
dataPathOverride,
|
dataPathOverride,
|
||||||
msixPackagePrefixes = ["Mozilla.Firefox", "Mozilla.MozillaFirefox"]
|
msixPackagePrefixes = ["Mozilla.Firefox", "Mozilla.MozillaFirefox"]
|
||||||
) {
|
) {
|
||||||
if (AppConstants.platform != "win") {
|
if (AppConstants.platform != "win") {
|
||||||
// This is a windows-only feature.
|
// This is a windows-only feature.
|
||||||
return {};
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TIMESTAMP_PREF = "app.installation.timestamp";
|
const TIMESTAMP_PREF = "app.installation.timestamp";
|
||||||
@ -1370,7 +1368,7 @@ export let BrowserUsageTelemetry = {
|
|||||||
if (pfn) {
|
if (pfn) {
|
||||||
if (lastInstallTime != null) {
|
if (lastInstallTime != null) {
|
||||||
// We've already seen this install
|
// We've already seen this install
|
||||||
return {};
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// First time seeing this install, record the timestamp.
|
// First time seeing this install, record the timestamp.
|
||||||
@ -1413,7 +1411,7 @@ export let BrowserUsageTelemetry = {
|
|||||||
if (ex.name == "NotFoundError") {
|
if (ex.name == "NotFoundError") {
|
||||||
// Many systems will not have the data file, return silently if not found as
|
// Many systems will not have the data file, return silently if not found as
|
||||||
// there is nothing to record.
|
// there is nothing to record.
|
||||||
return {};
|
return;
|
||||||
}
|
}
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
@ -1422,7 +1420,7 @@ export let BrowserUsageTelemetry = {
|
|||||||
|
|
||||||
if (lastInstallTime && data.install_timestamp == lastInstallTime) {
|
if (lastInstallTime && data.install_timestamp == lastInstallTime) {
|
||||||
// We've already seen this install
|
// We've already seen this install
|
||||||
return {};
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// First time seeing this install, record the timestamp.
|
// First time seeing this install, record the timestamp.
|
||||||
@ -1450,69 +1448,15 @@ export let BrowserUsageTelemetry = {
|
|||||||
extra.default_path = data.default_path.toString();
|
extra.default_path = data.default_path.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { installer_type, extra };
|
// Record the event
|
||||||
},
|
Services.telemetry.setEventRecordingEnabled("installation", true);
|
||||||
|
Services.telemetry.recordEvent(
|
||||||
async reportInstallationTelemetry(
|
"installation",
|
||||||
dataPathOverride,
|
"first_seen",
|
||||||
msixPackagePrefixes = ["Mozilla.Firefox", "Mozilla.MozillaFirefox"]
|
installer_type,
|
||||||
) {
|
null,
|
||||||
// The optional dataPathOverride is only used for testing purposes.
|
extra
|
||||||
// Use this as a proxy for whether we're in a testing environment.
|
);
|
||||||
// If we're in a testing environment we don't want to return the
|
|
||||||
// same data even if we call this function multiple times in the
|
|
||||||
// same instance.
|
|
||||||
if (gInstallationTelemetryPromise && !dataPathOverride) {
|
|
||||||
return gInstallationTelemetryPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
gInstallationTelemetryPromise = (async () => {
|
|
||||||
let data = await BrowserUsageTelemetry.collectInstallationTelemetry(
|
|
||||||
dataPathOverride,
|
|
||||||
msixPackagePrefixes
|
|
||||||
);
|
|
||||||
|
|
||||||
if (data?.installer_type) {
|
|
||||||
let { installer_type, extra } = data;
|
|
||||||
|
|
||||||
// Record the event
|
|
||||||
Services.telemetry.setEventRecordingEnabled("installation", true);
|
|
||||||
Services.telemetry.recordEvent(
|
|
||||||
"installation",
|
|
||||||
"first_seen",
|
|
||||||
installer_type,
|
|
||||||
null,
|
|
||||||
extra
|
|
||||||
);
|
|
||||||
|
|
||||||
// Scalars for the new-profile ping. We don't need to collect the build version
|
|
||||||
// These are mirrored to legacy telemetry using GIFFT
|
|
||||||
Glean.installationFirstSeen.installerType.set(installer_type);
|
|
||||||
Glean.installationFirstSeen.version.set(extra.version);
|
|
||||||
// Convert "true" or "false" strings back into booleans
|
|
||||||
Glean.installationFirstSeen.adminUser.set(extra.admin_user === "true");
|
|
||||||
Glean.installationFirstSeen.installExisted.set(
|
|
||||||
extra.install_existed === "true"
|
|
||||||
);
|
|
||||||
Glean.installationFirstSeen.profdirExisted.set(
|
|
||||||
extra.profdir_existed === "true"
|
|
||||||
);
|
|
||||||
Glean.installationFirstSeen.otherInst.set(extra.other_inst === "true");
|
|
||||||
Glean.installationFirstSeen.otherMsixInst.set(
|
|
||||||
extra.other_msix_inst === "true"
|
|
||||||
);
|
|
||||||
if (installer_type == "full") {
|
|
||||||
Glean.installationFirstSeen.silent.set(extra.silent === "true");
|
|
||||||
Glean.installationFirstSeen.fromMsi.set(extra.from_msi === "true");
|
|
||||||
Glean.installationFirstSeen.defaultPath.set(
|
|
||||||
extra.default_path === "true"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
})();
|
|
||||||
|
|
||||||
return gInstallationTelemetryPromise;
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -94,189 +94,6 @@ browser.engagement:
|
|||||||
- metrics
|
- metrics
|
||||||
expires: never
|
expires: never
|
||||||
|
|
||||||
installation.first_seen:
|
|
||||||
failure_reason:
|
|
||||||
type: string
|
|
||||||
description: >
|
|
||||||
Only sent if unable to collect firstSeen data. Can have
|
|
||||||
value "NotFoundError" if file not found or other values
|
|
||||||
depending on the failure reason.
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_FAILURE_REASON
|
|
||||||
|
|
||||||
installer_type:
|
|
||||||
type: string
|
|
||||||
description: >
|
|
||||||
The type of installer used to install Firefox.
|
|
||||||
The value is one of "stub", "full", or "msix"
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_INSTALLER_TYPE
|
|
||||||
|
|
||||||
version:
|
|
||||||
type: string
|
|
||||||
description: >
|
|
||||||
The application version installed by the installer
|
|
||||||
(not necessarily the current version)
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_VERSION
|
|
||||||
|
|
||||||
admin_user:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
Whether the installer is running from an elevated admin user
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_ADMIN_USER
|
|
||||||
|
|
||||||
install_existed:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
Whether there was already an install in this location
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_INSTALL_EXISTED
|
|
||||||
|
|
||||||
profdir_existed:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
Whether the top-level profile directory existed
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_PROFDIR_EXISTED
|
|
||||||
|
|
||||||
other_inst:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
Whether there was already any non-MSIX install on this system
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_OTHER_INST
|
|
||||||
|
|
||||||
other_msix_inst:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
Whether there was already any MSIX install on this system
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_OTHER_MSIX_INST
|
|
||||||
|
|
||||||
silent:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether this was a silent install
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_SILENT
|
|
||||||
|
|
||||||
from_msi:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether this was an MSI install
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_FROM_MSI
|
|
||||||
|
|
||||||
default_path:
|
|
||||||
type: boolean
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether the default path was used
|
|
||||||
bugs:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_reviews:
|
|
||||||
- https://bugzilla.mozilla.org/show_bug.cgi?id=1811374
|
|
||||||
data_sensitivity:
|
|
||||||
- technical
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
expires: never
|
|
||||||
telemetry_mirror: INSTALLATION_FIRSTSEEN_DEFAULT_PATH
|
|
||||||
|
|
||||||
performance.interaction:
|
performance.interaction:
|
||||||
tab_switch_composite:
|
tab_switch_composite:
|
||||||
|
@ -155,223 +155,6 @@ a11y:
|
|||||||
record_in_processes:
|
record_in_processes:
|
||||||
- 'main'
|
- 'main'
|
||||||
|
|
||||||
installation.firstSeen:
|
|
||||||
failure_reason:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
Only sent if unable to collect firstSeen data. Can have
|
|
||||||
value "NotFoundError" if file not found or other values
|
|
||||||
depending on the failure reason.
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: string
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
installer_type:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
The type of installer used to install Firefox.
|
|
||||||
The value is one of "stub", "full", or "msix"
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: string
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
version:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
The application version installed by the installer
|
|
||||||
(not necessarily the current version)
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: string
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
admin_user:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
Whether the installer is running from an elevated admin user
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
install_existed:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
'Whether there was already an install in this location'
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
profdir_existed:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
'Whether the top-level profile directory existed'
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
other_inst:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
'Whether there was already any non-MSIX install on this system'
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
other_msix_inst:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
'Whether there was already any MSIX install on this system'
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
silent:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether this was a silent install
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
from_msi:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether this was an MSI install
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
default_path:
|
|
||||||
bug_numbers:
|
|
||||||
- 1811374
|
|
||||||
description: >
|
|
||||||
(optional, present if installer_type is "full")
|
|
||||||
Whether the default path was used
|
|
||||||
keyed: false
|
|
||||||
expires: "134"
|
|
||||||
kind: boolean
|
|
||||||
notification_emails:
|
|
||||||
- rtestard@mozilla.com
|
|
||||||
- application-update-telemetry-alerts@mozilla.com
|
|
||||||
release_channel_collection: opt-out
|
|
||||||
products:
|
|
||||||
- 'firefox'
|
|
||||||
record_in_processes:
|
|
||||||
- 'all'
|
|
||||||
record_into_store:
|
|
||||||
- 'new-profile'
|
|
||||||
|
|
||||||
browser.backup:
|
browser.backup:
|
||||||
prof_d_disk_space:
|
prof_d_disk_space:
|
||||||
bug_numbers:
|
bug_numbers:
|
||||||
|
@ -36,7 +36,6 @@ const REASON_GATHER_SUBSESSION_PAYLOAD = "gather-subsession-payload";
|
|||||||
const lazy = {};
|
const lazy = {};
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(lazy, {
|
ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
BrowserUsageTelemetry: "resource://gre/modules/BrowserUsageTelemetry.sys.mjs",
|
|
||||||
ClientID: "resource://gre/modules/ClientID.sys.mjs",
|
ClientID: "resource://gre/modules/ClientID.sys.mjs",
|
||||||
CoveragePing: "resource://gre/modules/CoveragePing.sys.mjs",
|
CoveragePing: "resource://gre/modules/CoveragePing.sys.mjs",
|
||||||
TelemetryArchive: "resource://gre/modules/TelemetryArchive.sys.mjs",
|
TelemetryArchive: "resource://gre/modules/TelemetryArchive.sys.mjs",
|
||||||
@ -1236,17 +1235,6 @@ var Impl = {
|
|||||||
NEWPROFILE_PING_DEFAULT_DELAY
|
NEWPROFILE_PING_DEFAULT_DELAY
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
|
||||||
// This is asynchronous, but we aren't going to await on it now. Just
|
|
||||||
// kick it off.
|
|
||||||
lazy.BrowserUsageTelemetry.reportInstallationTelemetry();
|
|
||||||
} catch (ex) {
|
|
||||||
this._log.warn(
|
|
||||||
"scheduleNewProfilePing - reportInstallationTelemetry failed",
|
|
||||||
ex
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._delayedNewPingTask = new DeferredTask(async () => {
|
this._delayedNewPingTask = new DeferredTask(async () => {
|
||||||
try {
|
try {
|
||||||
await this.sendNewProfilePing();
|
await this.sendNewProfilePing();
|
||||||
@ -1266,25 +1254,6 @@ var Impl = {
|
|||||||
"sendNewProfilePing - shutting down: " + this._shuttingDown
|
"sendNewProfilePing - shutting down: " + this._shuttingDown
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
|
||||||
await lazy.BrowserUsageTelemetry.reportInstallationTelemetry();
|
|
||||||
} catch (ex) {
|
|
||||||
this._log.warn(
|
|
||||||
"sendNewProfilePing - reportInstallationTelemetry failed",
|
|
||||||
ex
|
|
||||||
);
|
|
||||||
// No dataPathOverride here so we can check the default location
|
|
||||||
// for installation_telemetry.json
|
|
||||||
let dataPath = Services.dirsvc.get("GreD", Ci.nsIFile);
|
|
||||||
dataPath.append("installation_telemetry.json");
|
|
||||||
let fileExists = await IOUtils.exists(dataPath.path);
|
|
||||||
if (!fileExists) {
|
|
||||||
Glean.installationFirstSeen.failureReason.set("NotFoundError");
|
|
||||||
} else {
|
|
||||||
Glean.installationFirstSeen.failureReason.set(ex.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const scalars = Services.telemetry.getSnapshotForScalars(
|
const scalars = Services.telemetry.getSnapshotForScalars(
|
||||||
"new-profile",
|
"new-profile",
|
||||||
/* clear */ true
|
/* clear */ true
|
||||||
|
@ -732,25 +732,6 @@ add_task(async function test_sendNewProfile() {
|
|||||||
"The new-profile ping generated after startup must have processes.parent data"
|
"The new-profile ping generated after startup must have processes.parent data"
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.ok(
|
|
||||||
"scalars" in ping.payload.processes.parent,
|
|
||||||
"The new-profile ping should have a field for scalars"
|
|
||||||
);
|
|
||||||
|
|
||||||
Assert.ok(
|
|
||||||
"installation.firstSeen.failure_reason" in
|
|
||||||
ping.payload.processes.parent.scalars,
|
|
||||||
"The new-profile ping should have an installation.firstSeen.failure_reason scalar"
|
|
||||||
);
|
|
||||||
|
|
||||||
Assert.equal(
|
|
||||||
ping.payload.processes.parent.scalars[
|
|
||||||
"installation.firstSeen.failure_reason"
|
|
||||||
],
|
|
||||||
"NotFoundError",
|
|
||||||
"The new-profile ping should return NotFoundError as we don't have a telemetry state file"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check that is not sent with the pingsender during startup.
|
// Check that is not sent with the pingsender during startup.
|
||||||
Assert.throws(
|
Assert.throws(
|
||||||
() => req.getHeader("X-PingSender-Version"),
|
() => req.getHeader("X-PingSender-Version"),
|
||||||
@ -779,25 +760,6 @@ add_task(async function test_sendNewProfile() {
|
|||||||
"The new-profile ping generated at shutdown must have processes.parent data"
|
"The new-profile ping generated at shutdown must have processes.parent data"
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.ok(
|
|
||||||
"scalars" in ping.payload.processes.parent,
|
|
||||||
"The new-profile ping should have a field for scalars"
|
|
||||||
);
|
|
||||||
|
|
||||||
Assert.ok(
|
|
||||||
"installation.firstSeen.failure_reason" in
|
|
||||||
ping.payload.processes.parent.scalars,
|
|
||||||
"The new-profile ping should have an installation.firstSeen.failure_reason scalar"
|
|
||||||
);
|
|
||||||
|
|
||||||
Assert.equal(
|
|
||||||
ping.payload.processes.parent.scalars[
|
|
||||||
"installation.firstSeen.failure_reason"
|
|
||||||
],
|
|
||||||
"NotFoundError",
|
|
||||||
"The new-profile ping should return NotFoundError as we don't have a telemetry state file"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check that the new-profile ping is sent at shutdown using the pingsender.
|
// Check that the new-profile ping is sent at shutdown using the pingsender.
|
||||||
Assert.equal(
|
Assert.equal(
|
||||||
req.getHeader("User-Agent"),
|
req.getHeader("User-Agent"),
|
||||||
|
@ -1,137 +0,0 @@
|
|||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/
|
|
||||||
*/
|
|
||||||
|
|
||||||
const { BrowserUsageTelemetry } = ChromeUtils.importESModule(
|
|
||||||
"resource:///modules/BrowserUsageTelemetry.sys.mjs"
|
|
||||||
);
|
|
||||||
const { TelemetryTestUtils } = ChromeUtils.importESModule(
|
|
||||||
"resource://testing-common/TelemetryTestUtils.sys.mjs"
|
|
||||||
);
|
|
||||||
|
|
||||||
const TIMESTAMP_TEST_VALUE = "007357735773577357";
|
|
||||||
|
|
||||||
let jsonPath = Services.dirsvc.get("XREExeF", Ci.nsIFile).parent;
|
|
||||||
jsonPath.append("installation_telemetry.json");
|
|
||||||
|
|
||||||
let scalarSnapshot = null;
|
|
||||||
|
|
||||||
let testDataJSON = {
|
|
||||||
version: "000.0a1",
|
|
||||||
build_id: "00000000000000",
|
|
||||||
admin_user: true,
|
|
||||||
install_existed: false,
|
|
||||||
profdir_existed: false,
|
|
||||||
installer_type: "full",
|
|
||||||
other_inst: false,
|
|
||||||
other_msix_inst: false,
|
|
||||||
silent: false,
|
|
||||||
from_msi: false,
|
|
||||||
default_path: true,
|
|
||||||
install_timestamp: TIMESTAMP_TEST_VALUE,
|
|
||||||
};
|
|
||||||
|
|
||||||
async function createTestInstallationTelemetry() {
|
|
||||||
let utf16Array = new Uint16Array(
|
|
||||||
[...JSON.stringify(testDataJSON)].map(char => char.charCodeAt(0))
|
|
||||||
);
|
|
||||||
let byteArray = new Uint8Array(utf16Array.buffer);
|
|
||||||
await IOUtils.write(jsonPath.path, byteArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
add_setup(
|
|
||||||
{
|
|
||||||
skip_if: () =>
|
|
||||||
Services.prefs.getBoolPref("telemetry.fog.artifact_build", false),
|
|
||||||
},
|
|
||||||
function () {
|
|
||||||
do_get_profile();
|
|
||||||
Services.fog.initializeFOG();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
add_setup(async function () {
|
|
||||||
Services.telemetry.clearScalars();
|
|
||||||
await createTestInstallationTelemetry();
|
|
||||||
await BrowserUsageTelemetry.reportInstallationTelemetry();
|
|
||||||
scalarSnapshot = Services.telemetry.getSnapshotForScalars(
|
|
||||||
"new-profile",
|
|
||||||
false
|
|
||||||
).parent;
|
|
||||||
});
|
|
||||||
|
|
||||||
registerCleanupFunction(async () => {
|
|
||||||
await IOUtils.remove(jsonPath.path, { ignoreAbsent: true });
|
|
||||||
});
|
|
||||||
|
|
||||||
add_task(async function test_new_profile_ping() {
|
|
||||||
Object.entries(testDataJSON).forEach(([key, value]) => {
|
|
||||||
// We don't log "build_id" as a scalar
|
|
||||||
if (key == "build_id") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// We must not log install_timestamp as a scalar due
|
|
||||||
// to fingerprinting risk. Verify that we don't.
|
|
||||||
if (key == "install_timestamp") {
|
|
||||||
Assert.ok(
|
|
||||||
!(`installation.firstSeen.${key}` in scalarSnapshot),
|
|
||||||
"Must not record " + key + " as a scalar"
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TelemetryTestUtils.assertScalar(
|
|
||||||
scalarSnapshot,
|
|
||||||
`installation.firstSeen.${key}`,
|
|
||||||
value
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
add_task(
|
|
||||||
{
|
|
||||||
skip_if: () =>
|
|
||||||
Services.prefs.getBoolPref("telemetry.fog.artifact_build", false),
|
|
||||||
},
|
|
||||||
async function test_new_profile_gifft_mirror() {
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.installer_type,
|
|
||||||
Glean.installationFirstSeen.installerType.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.version,
|
|
||||||
Glean.installationFirstSeen.version.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.admin_user,
|
|
||||||
Glean.installationFirstSeen.adminUser.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.install_existed,
|
|
||||||
Glean.installationFirstSeen.installExisted.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.profdir_existed,
|
|
||||||
Glean.installationFirstSeen.profdirExisted.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.other_inst,
|
|
||||||
Glean.installationFirstSeen.otherInst.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.other_msix_inst,
|
|
||||||
Glean.installationFirstSeen.otherMsixInst.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.silent,
|
|
||||||
Glean.installationFirstSeen.silent.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.from_msi,
|
|
||||||
Glean.installationFirstSeen.fromMsi.testGetValue()
|
|
||||||
);
|
|
||||||
Assert.equal(
|
|
||||||
testDataJSON.default_path,
|
|
||||||
Glean.installationFirstSeen.defaultPath.testGetValue()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
@ -184,6 +184,3 @@ run-if = ["os == 'win'"]
|
|||||||
|
|
||||||
["test_failover_retry.js"]
|
["test_failover_retry.js"]
|
||||||
skip-if = ["os == 'android'"] # Android doesn't support telemetry though some tests manage to pass with xpcshell
|
skip-if = ["os == 'android'"] # Android doesn't support telemetry though some tests manage to pass with xpcshell
|
||||||
|
|
||||||
["test_new_profile.js"]
|
|
||||||
run-if = ["os == 'win'"]
|
|
||||||
|
Loading…
Reference in New Issue
Block a user