mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 02:08:38 +09:00
[Basilisk] Issue MoonchildProductions/GRE#3029 - Remove telemetry from FE
This commit is contained in:
parent
054e286777
commit
653cba3202
49 changed files with 17 additions and 1661 deletions
|
|
@ -93,30 +93,20 @@ const AutoMigrate = {
|
|||
* failed for some reason.
|
||||
*/
|
||||
migrate(profileStartup, migratorKey, profileToMigrate) {
|
||||
let histogram = Services.telemetry.getHistogramById(
|
||||
"FX_STARTUP_MIGRATION_AUTOMATED_IMPORT_PROCESS_SUCCESS");
|
||||
histogram.add(0);
|
||||
let {migrator, pickedKey} = this.pickMigrator(migratorKey);
|
||||
histogram.add(5);
|
||||
|
||||
profileToMigrate = this.pickProfile(migrator, profileToMigrate);
|
||||
histogram.add(10);
|
||||
|
||||
let resourceTypes = migrator.getMigrateData(profileToMigrate, profileStartup);
|
||||
if (!(resourceTypes & this.resourceTypesToUse)) {
|
||||
throw new Error("No usable resources were found for the selected browser!");
|
||||
}
|
||||
histogram.add(15);
|
||||
|
||||
let sawErrors = false;
|
||||
let migrationObserver = (subject, topic) => {
|
||||
if (topic == "Migration:ItemError") {
|
||||
sawErrors = true;
|
||||
} else if (topic == "Migration:Ended") {
|
||||
histogram.add(25);
|
||||
if (sawErrors) {
|
||||
histogram.add(26);
|
||||
}
|
||||
Services.obs.removeObserver(migrationObserver, "Migration:Ended");
|
||||
Services.obs.removeObserver(migrationObserver, "Migration:ItemError");
|
||||
Services.prefs.setCharPref(kAutoMigrateBrowserPref, pickedKey);
|
||||
|
|
@ -132,7 +122,6 @@ const AutoMigrate = {
|
|||
Services.obs.addObserver(migrationObserver, "Migration:Ended", false);
|
||||
Services.obs.addObserver(migrationObserver, "Migration:ItemError", false);
|
||||
migrator.migrate(this.resourceTypesToUse, profileStartup, profileToMigrate);
|
||||
histogram.add(20);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
@ -209,50 +198,35 @@ const AutoMigrate = {
|
|||
|
||||
undo: Task.async(function* () {
|
||||
let browserId = Preferences.get(kAutoMigrateBrowserPref, "unknown");
|
||||
let histogram = Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_AUTOMATED_IMPORT_UNDO");
|
||||
histogram.add(0);
|
||||
if (!(yield this.canUndo())) {
|
||||
histogram.add(5);
|
||||
throw new Error("Can't undo!");
|
||||
}
|
||||
|
||||
this._pendingUndoTasks = true;
|
||||
this._removeNotificationBars();
|
||||
histogram.add(10);
|
||||
|
||||
let readPromise = OS.File.read(kUndoStateFullPath, {
|
||||
encoding: "utf-8",
|
||||
compression: "lz4",
|
||||
});
|
||||
let stateData = this._dejsonifyUndoState(yield readPromise);
|
||||
histogram.add(12);
|
||||
|
||||
this._errorMap = {bookmarks: 0, visits: 0, logins: 0};
|
||||
let reportErrorTelemetry = (type) => {
|
||||
let histogramId = `FX_STARTUP_MIGRATION_UNDO_${type.toUpperCase()}_ERRORCOUNT`;
|
||||
Services.telemetry.getKeyedHistogramById(histogramId).add(browserId, this._errorMap[type]);
|
||||
};
|
||||
|
||||
yield this._removeUnchangedBookmarks(stateData.get("bookmarks")).catch(ex => {
|
||||
Cu.reportError("Uncaught exception when removing unchanged bookmarks!");
|
||||
Cu.reportError(ex);
|
||||
});
|
||||
reportErrorTelemetry("bookmarks");
|
||||
histogram.add(15);
|
||||
|
||||
yield this._removeSomeVisits(stateData.get("visits")).catch(ex => {
|
||||
Cu.reportError("Uncaught exception when removing history visits!");
|
||||
Cu.reportError(ex);
|
||||
});
|
||||
reportErrorTelemetry("visits");
|
||||
histogram.add(20);
|
||||
|
||||
yield this._removeUnchangedLogins(stateData.get("logins")).catch(ex => {
|
||||
Cu.reportError("Uncaught exception when removing unchanged logins!");
|
||||
Cu.reportError(ex);
|
||||
});
|
||||
reportErrorTelemetry("logins");
|
||||
histogram.add(25);
|
||||
|
||||
// This is async, but no need to wait for it.
|
||||
NewTabUtils.links.populateCache(() => {
|
||||
|
|
@ -260,7 +234,6 @@ const AutoMigrate = {
|
|||
}, true);
|
||||
|
||||
this._purgeUndoState(this.UNDO_REMOVED_REASON_UNDO_USED);
|
||||
histogram.add(30);
|
||||
}),
|
||||
|
||||
_removeNotificationBars() {
|
||||
|
|
@ -288,10 +261,6 @@ const AutoMigrate = {
|
|||
|
||||
let migrationBrowser = Preferences.get(kAutoMigrateBrowserPref, "unknown");
|
||||
Services.prefs.clearUserPref(kAutoMigrateBrowserPref);
|
||||
|
||||
let histogram =
|
||||
Services.telemetry.getKeyedHistogramById("FX_STARTUP_MIGRATION_UNDO_REASON");
|
||||
histogram.add(migrationBrowser, reason);
|
||||
},
|
||||
|
||||
getBrowserUsedForMigration() {
|
||||
|
|
@ -367,7 +336,6 @@ const AutoMigrate = {
|
|||
message, kNotificationId, null, notificationBox.PRIORITY_INFO_HIGH, buttons
|
||||
);
|
||||
let remainingDays = Preferences.get(kAutoMigrateDaysToOfferUndoPref, 0);
|
||||
Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_UNDO_OFFERED").add(4 - remainingDays);
|
||||
}),
|
||||
|
||||
shouldStillShowUndoPrompt() {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
|
||||
* vim: sw=2 ts=2 sts=2 et */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* 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/. */
|
||||
|
||||
|
|
@ -170,77 +169,8 @@ FirefoxProfileMigrator.prototype._getResourcesInternal = function(sourceProfileD
|
|||
};
|
||||
}
|
||||
|
||||
// Telemetry related migrations.
|
||||
let times = {
|
||||
name: "times", // name is used only by tests.
|
||||
type: types.OTHERDATA,
|
||||
migrate: aCallback => {
|
||||
let file = this._getFileObject(sourceProfileDir, "times.json");
|
||||
if (file) {
|
||||
file.copyTo(currentProfileDir, "");
|
||||
}
|
||||
// And record the fact a migration (ie, a reset) happened.
|
||||
let timesAccessor = new ProfileAge(currentProfileDir.path);
|
||||
timesAccessor.recordProfileReset().then(
|
||||
() => aCallback(true),
|
||||
() => aCallback(false)
|
||||
);
|
||||
}
|
||||
};
|
||||
let telemetry = {
|
||||
name: "telemetry", // name is used only by tests...
|
||||
type: types.OTHERDATA,
|
||||
migrate: aCallback => {
|
||||
let createSubDir = (name) => {
|
||||
let dir = currentProfileDir.clone();
|
||||
dir.append(name);
|
||||
dir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
|
||||
return dir;
|
||||
};
|
||||
|
||||
// If the 'datareporting' directory exists we migrate files from it.
|
||||
let haveStateFile = false;
|
||||
let dataReportingDir = this._getFileObject(sourceProfileDir, "datareporting");
|
||||
if (dataReportingDir && dataReportingDir.isDirectory()) {
|
||||
// Copy only specific files.
|
||||
let toCopy = ["state.json", "session-state.json"];
|
||||
|
||||
let dest = createSubDir("datareporting");
|
||||
let enumerator = dataReportingDir.directoryEntries;
|
||||
while (enumerator.hasMoreElements()) {
|
||||
let file = enumerator.getNext().QueryInterface(Ci.nsIFile);
|
||||
if (file.isDirectory() || toCopy.indexOf(file.leafName) == -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file.leafName == "state.json") {
|
||||
haveStateFile = true;
|
||||
}
|
||||
file.copyTo(dest, "");
|
||||
}
|
||||
}
|
||||
|
||||
if (!haveStateFile) {
|
||||
// Fall back to migrating the state file that contains the client id from healthreport/.
|
||||
// We first moved the client id management from the FHR implementation to the datareporting
|
||||
// service.
|
||||
// Consequently, we try to migrate an existing FHR state file here as a fallback.
|
||||
let healthReportDir = this._getFileObject(sourceProfileDir, "healthreport");
|
||||
if (healthReportDir && healthReportDir.isDirectory()) {
|
||||
let stateFile = this._getFileObject(healthReportDir, "state.json");
|
||||
if (stateFile) {
|
||||
let dest = createSubDir("healthreport");
|
||||
stateFile.copyTo(dest, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
aCallback(true);
|
||||
}
|
||||
};
|
||||
|
||||
return [places, cookies, passwords, formData, dictionary, bookmarksBackups,
|
||||
session, times, telemetry].filter(r => r);
|
||||
session].filter(r => r);
|
||||
};
|
||||
|
||||
Object.defineProperty(FirefoxProfileMigrator.prototype, "startupOnlyMigrator", {
|
||||
|
|
|
|||
|
|
@ -265,27 +265,6 @@ this.MigratorPrototype = {
|
|||
let maybeFinishResponsivenessMonitor = (responsivenessMonitor, histogramId) => {
|
||||
if (responsivenessMonitor) {
|
||||
let accumulatedDelay = responsivenessMonitor.finish();
|
||||
if (histogramId) {
|
||||
try {
|
||||
Services.telemetry.getKeyedHistogramById(histogramId)
|
||||
.add(browserKey, accumulatedDelay);
|
||||
} catch (ex) {
|
||||
Cu.reportError(histogramId + ": " + ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let collectQuantityTelemetry = () => {
|
||||
for (let resourceType of Object.keys(MigrationUtils._importQuantities)) {
|
||||
let histogramId =
|
||||
"FX_MIGRATION_" + resourceType.toUpperCase() + "_QUANTITY";
|
||||
try {
|
||||
Services.telemetry.getKeyedHistogramById(histogramId)
|
||||
.add(browserKey, MigrationUtils._importQuantities[resourceType]);
|
||||
} catch (ex) {
|
||||
Cu.reportError(histogramId + ": " + ex);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -331,7 +310,6 @@ this.MigratorPrototype = {
|
|||
maybeFinishResponsivenessMonitor(responsivenessMonitor, responsivenessHistogramId);
|
||||
|
||||
if (resourcesGroupedByItems.size == 0) {
|
||||
collectQuantityTelemetry();
|
||||
notify("Migration:Ended");
|
||||
}
|
||||
}
|
||||
|
|
@ -803,7 +781,6 @@ this.MigrationUtils = Object.freeze({
|
|||
* - {String} an identifier for the profile to use when migrating
|
||||
* NB: If you add new consumers, please add a migration entry point
|
||||
* constant below, and specify at least the first element of the array
|
||||
* (the migration entry point for purposes of telemetry).
|
||||
*/
|
||||
showMigrationWizard:
|
||||
function MU_showMigrationWizard(aOpener, aParams) {
|
||||
|
|
@ -1096,7 +1073,4 @@ this.MigrationUtils = Object.freeze({
|
|||
"safari": 8,
|
||||
"360se": 9,
|
||||
},
|
||||
getSourceIdForTelemetry(sourceName) {
|
||||
return this._sourceNameToIdMapping[sourceName] || 0;
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
|
||||
let args = window.arguments;
|
||||
let entryPointId = args[0] || MigrationUtils.MIGRATION_ENTRYPOINT_UNKNOWN;
|
||||
Services.telemetry.getHistogramById("FX_MIGRATION_ENTRY_POINT").add(entryPointId);
|
||||
this.isInitialMigration = entryPointId == MigrationUtils.MIGRATION_ENTRYPOINT_FIRSTRUN;
|
||||
|
||||
if (args.length > 1) {
|
||||
|
|
@ -105,15 +104,6 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
}
|
||||
}
|
||||
}
|
||||
if (this.isInitialMigration) {
|
||||
Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_BROWSER_COUNT")
|
||||
.add(this._availableMigrators.length);
|
||||
let defaultBrowser = MigrationUtils.getMigratorKeyForDefaultBrowser();
|
||||
// This will record 0 for unknown default browser IDs.
|
||||
defaultBrowser = MigrationUtils.getSourceIdForTelemetry(defaultBrowser);
|
||||
Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_EXISTING_DEFAULT_BROWSER")
|
||||
.add(defaultBrowser);
|
||||
}
|
||||
|
||||
group.addEventListener("command", toggleCloseBrowserWarning);
|
||||
|
||||
|
|
@ -142,11 +132,6 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
var newSource = document.getElementById("importSourceGroup").selectedItem.id;
|
||||
|
||||
if (newSource == "nothing") {
|
||||
// Need to do telemetry here because we're closing the dialog before we get to
|
||||
// do actual migration. For actual migration, this doesn't happen until after
|
||||
// migration takes place.
|
||||
Services.telemetry.getHistogramById("FX_MIGRATION_SOURCE_BROWSER")
|
||||
.add(MigrationUtils.getSourceIdForTelemetry("nothing"));
|
||||
document.documentElement.cancel();
|
||||
return false;
|
||||
}
|
||||
|
|
@ -366,21 +351,6 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
onMigratingMigrate: function ()
|
||||
{
|
||||
this._migrator.migrate(this._itemsFlags, this._autoMigrate, this._selectedProfile);
|
||||
|
||||
Services.telemetry.getHistogramById("FX_MIGRATION_SOURCE_BROWSER")
|
||||
.add(MigrationUtils.getSourceIdForTelemetry(this._source));
|
||||
if (!this._autoMigrate) {
|
||||
let hist = Services.telemetry.getKeyedHistogramById("FX_MIGRATION_USAGE");
|
||||
let exp = 0;
|
||||
let items = this._itemsFlags;
|
||||
while (items) {
|
||||
if (items & 1) {
|
||||
hist.add(this._source, exp);
|
||||
}
|
||||
items = items >> 1;
|
||||
exp++;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_listItems: function (aID)
|
||||
|
|
@ -426,18 +396,8 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
label.removeAttribute("style");
|
||||
break;
|
||||
case "Migration:Ended":
|
||||
if (this.isInitialMigration) {
|
||||
// Ensure errors in reporting data recency do not affect the rest of the migration.
|
||||
try {
|
||||
this.reportDataRecencyTelemetry();
|
||||
} catch (ex) {
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
}
|
||||
if (this._autoMigrate) {
|
||||
let hasImportedHomepage = !!(this._newHomePage && this._newHomePage != "DEFAULT");
|
||||
Services.telemetry.getKeyedHistogramById("FX_MIGRATION_IMPORTED_HOMEPAGE")
|
||||
.add(this._source, hasImportedHomepage);
|
||||
if (this._newHomePage) {
|
||||
try {
|
||||
// set homepage properly
|
||||
|
|
@ -508,8 +468,6 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
Cc["@mozilla.org/consoleservice;1"]
|
||||
.getService(Ci.nsIConsoleService)
|
||||
.logStringMessage("some " + type + " did not successfully migrate.");
|
||||
Services.telemetry.getKeyedHistogramById("FX_MIGRATION_ERRORS")
|
||||
.add(this._source, Math.log2(numericType));
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
|
@ -521,29 +479,4 @@ var MigrationWizard = { /* exported MigrationWizard */
|
|||
this._listItems("doneItems");
|
||||
},
|
||||
|
||||
reportDataRecencyTelemetry() {
|
||||
let histogram = Services.telemetry.getKeyedHistogramById("FX_STARTUP_MIGRATION_DATA_RECENCY");
|
||||
let lastUsedPromises = [];
|
||||
for (let [key, migrator] of this._availableMigrators) {
|
||||
// No block-scoped let in for...of loop conditions, so get the source:
|
||||
let localKey = key;
|
||||
lastUsedPromises.push(migrator.getLastUsedDate().then(date => {
|
||||
const ONE_YEAR = 24 * 365;
|
||||
let diffInHours = Math.round((Date.now() - date) / (60 * 60 * 1000));
|
||||
if (diffInHours > ONE_YEAR) {
|
||||
diffInHours = ONE_YEAR;
|
||||
}
|
||||
histogram.add(localKey, diffInHours);
|
||||
return [localKey, diffInHours];
|
||||
}));
|
||||
}
|
||||
Promise.all(lastUsedPromises).then(migratorUsedTimeDiff => {
|
||||
// Sort low to high.
|
||||
migratorUsedTimeDiff.sort(([keyA, diffA], [keyB, diffB]) => diffA - diffB); /* eslint no-unused-vars: off */
|
||||
let usedMostRecentBrowser = migratorUsedTimeDiff.length && this._source == migratorUsedTimeDiff[0][0];
|
||||
let usedRecentBrowser =
|
||||
Services.telemetry.getKeyedHistogramById("FX_STARTUP_MIGRATION_USED_RECENT_BROWSER");
|
||||
usedRecentBrowser.add(this._source, usedMostRecentBrowser);
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -236,9 +236,6 @@ function openPreferences() {
|
|||
}
|
||||
|
||||
function logSystemBasedSearch(engine) {
|
||||
var countId = (engine.identifier || ("other-" + engine.name)) + ".system";
|
||||
var count = Services.telemetry.getKeyedHistogramById("SEARCH_COUNTS");
|
||||
count.add(countId);
|
||||
}
|
||||
|
||||
function doSearch(searchTerm, cmdLine) {
|
||||
|
|
@ -688,18 +685,6 @@ nsDefaultCommandLineHandler.prototype = {
|
|||
|
||||
/* nsICommandLineHandler */
|
||||
handle : function(cmdLine) {
|
||||
// The -url flag is inserted by the operating system when the default
|
||||
// application handler is used. We check for default browser to remove
|
||||
// instances where users explicitly decide to "open with" the browser.
|
||||
// Note that users who launch firefox manually with the -url flag will
|
||||
// get erroneously counted.
|
||||
try {
|
||||
if (cmdLine.findFlag("url", false) &&
|
||||
ShellService.isDefaultBrowser(false, false)) {
|
||||
Services.telemetry.getHistogramById("FX_STARTUP_EXTERNAL_CONTENT_HANDLER").add();
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
var urilist = [];
|
||||
|
||||
if (AppConstants.platform == "win") {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "AlertsService", "@mozilla.org/alerts-s
|
|||
["AutoCompletePopup", "resource://gre/modules/AutoCompletePopup.jsm"],
|
||||
["BookmarkHTMLUtils", "resource://gre/modules/BookmarkHTMLUtils.jsm"],
|
||||
["BookmarkJSONUtils", "resource://gre/modules/BookmarkJSONUtils.jsm"],
|
||||
["BrowserUsageTelemetry", "resource:///modules/BrowserUsageTelemetry.jsm"],
|
||||
["ContentClick", "resource:///modules/ContentClick.jsm"],
|
||||
["ContentPrefServiceParent", "resource://gre/modules/ContentPrefServiceParent.jsm"],
|
||||
["ContentSearch", "resource:///modules/ContentSearch.jsm"],
|
||||
|
|
@ -308,8 +307,6 @@ BrowserGlue.prototype = {
|
|||
} catch (ex) {
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
let win = RecentWindow.getMostRecentBrowserWindow();
|
||||
win.BrowserSearch.recordSearchInTelemetry(engine, "urlbar");
|
||||
break;
|
||||
case "browser-search-engine-modified":
|
||||
// Ensure we cleanup the hiddenOneOffs pref when removing
|
||||
|
|
@ -340,7 +337,6 @@ BrowserGlue.prototype = {
|
|||
});
|
||||
break;
|
||||
case "autocomplete-did-enter-text":
|
||||
this._handleURLBarTelemetry(subject.QueryInterface(Ci.nsIAutoCompleteInput));
|
||||
break;
|
||||
case "test-initialize-sanitizer":
|
||||
this._sanitizer.onStartup();
|
||||
|
|
@ -351,64 +347,6 @@ BrowserGlue.prototype = {
|
|||
}
|
||||
},
|
||||
|
||||
_handleURLBarTelemetry(input) {
|
||||
if (!input ||
|
||||
input.id != "urlbar" ||
|
||||
input.inPrivateContext ||
|
||||
input.popup.selectedIndex < 0) {
|
||||
return;
|
||||
}
|
||||
let controller =
|
||||
input.popup.view.QueryInterface(Ci.nsIAutoCompleteController);
|
||||
let idx = input.popup.selectedIndex;
|
||||
let value = controller.getValueAt(idx);
|
||||
let action = input._parseActionUrl(value);
|
||||
let actionType;
|
||||
if (action) {
|
||||
actionType =
|
||||
action.type == "searchengine" && action.params.searchSuggestion ?
|
||||
"searchsuggestion" :
|
||||
action.type;
|
||||
}
|
||||
if (!actionType) {
|
||||
let styles = new Set(controller.getStyleAt(idx).split(/\s+/));
|
||||
let style = ["autofill", "tag", "bookmark"].find(s => styles.has(s));
|
||||
actionType = style || "history";
|
||||
}
|
||||
|
||||
Services.telemetry
|
||||
.getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX")
|
||||
.add(idx);
|
||||
|
||||
// Ideally this would be a keyed histogram and we'd just add(actionType),
|
||||
// but keyed histograms aren't currently shown on the telemetry dashboard
|
||||
// (bug 1151756).
|
||||
//
|
||||
// You can add values but don't change any of the existing values.
|
||||
// Otherwise you'll break our data.
|
||||
let buckets = {
|
||||
autofill: 0,
|
||||
bookmark: 1,
|
||||
history: 2,
|
||||
keyword: 3,
|
||||
searchengine: 4,
|
||||
searchsuggestion: 5,
|
||||
switchtab: 6,
|
||||
tag: 7,
|
||||
visiturl: 8,
|
||||
remotetab: 9,
|
||||
extension: 10,
|
||||
};
|
||||
if (actionType in buckets) {
|
||||
Services.telemetry
|
||||
.getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE")
|
||||
.add(buckets[actionType]);
|
||||
} else {
|
||||
Cu.reportError("Unknown FX_URLBAR_SELECTED_RESULT_TYPE type: " +
|
||||
actionType);
|
||||
}
|
||||
},
|
||||
|
||||
// initialization (called on application startup)
|
||||
_init: function() {
|
||||
let os = Services.obs;
|
||||
|
|
@ -436,9 +374,6 @@ BrowserGlue.prototype = {
|
|||
os.addObserver(this, "distribution-customization-complete", false);
|
||||
os.addObserver(this, "handle-xul-text-link", false);
|
||||
os.addObserver(this, "profile-before-change", false);
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
os.addObserver(this, "keyword-search", false);
|
||||
}
|
||||
os.addObserver(this, "browser-search-engine-modified", false);
|
||||
os.addObserver(this, "restart-in-safe-mode", false);
|
||||
os.addObserver(this, "flash-plugin-hang", false);
|
||||
|
|
@ -490,9 +425,6 @@ BrowserGlue.prototype = {
|
|||
os.removeObserver(this, "places-database-locked");
|
||||
os.removeObserver(this, "handle-xul-text-link");
|
||||
os.removeObserver(this, "profile-before-change");
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
os.removeObserver(this, "keyword-search");
|
||||
}
|
||||
os.removeObserver(this, "browser-search-engine-modified");
|
||||
os.removeObserver(this, "flash-plugin-hang");
|
||||
os.removeObserver(this, "xpi-signature-changed");
|
||||
|
|
@ -531,10 +463,6 @@ BrowserGlue.prototype = {
|
|||
const STATE_USER_PICKED_IGNORE_FOREVER = 3;
|
||||
const STATE_USER_CLOSED_NOTIFICATION = 4;
|
||||
|
||||
let update = function(response) {
|
||||
Services.telemetry.getHistogramById("SLOW_ADDON_WARNING_STATES").add(response);
|
||||
}
|
||||
|
||||
let complete = false;
|
||||
let start = Date.now();
|
||||
let done = function(response) {
|
||||
|
|
@ -543,12 +471,8 @@ BrowserGlue.prototype = {
|
|||
return;
|
||||
}
|
||||
complete = true;
|
||||
update(response);
|
||||
Services.telemetry.getHistogramById("SLOW_ADDON_WARNING_RESPONSE_TIME").add(Date.now() - start);
|
||||
};
|
||||
|
||||
update(STATE_WARNING_DISPLAYED);
|
||||
|
||||
if (notification) {
|
||||
notification.label = message;
|
||||
} else {
|
||||
|
|
@ -659,7 +583,6 @@ BrowserGlue.prototype = {
|
|||
NewTabMessages.init();
|
||||
|
||||
SessionStore.init();
|
||||
BrowserUsageTelemetry.init();
|
||||
ContentSearch.init();
|
||||
FormValidationHandler.init();
|
||||
|
||||
|
|
@ -874,27 +797,6 @@ BrowserGlue.prototype = {
|
|||
nb.PRIORITY_WARNING_MEDIUM, buttons);
|
||||
},
|
||||
|
||||
_firstWindowTelemetry: function(aWindow) {
|
||||
let SCALING_PROBE_NAME = "";
|
||||
switch (AppConstants.platform) {
|
||||
case "win":
|
||||
SCALING_PROBE_NAME = "DISPLAY_SCALING_MSWIN";
|
||||
break;
|
||||
case "macosx":
|
||||
SCALING_PROBE_NAME = "DISPLAY_SCALING_OSX";
|
||||
break;
|
||||
case "linux":
|
||||
SCALING_PROBE_NAME = "DISPLAY_SCALING_LINUX";
|
||||
break;
|
||||
}
|
||||
if (SCALING_PROBE_NAME) {
|
||||
let scaling = aWindow.devicePixelRatio * 100;
|
||||
try {
|
||||
Services.telemetry.getHistogramById(SCALING_PROBE_NAME).add(scaling);
|
||||
} catch (ex) {}
|
||||
}
|
||||
},
|
||||
|
||||
// the first browser window has finished initializing
|
||||
_onFirstWindowLoaded: function(aWindow) {
|
||||
// Initialize PdfJs when running in-process and remote. This only
|
||||
|
|
@ -975,7 +877,6 @@ BrowserGlue.prototype = {
|
|||
AutoCompletePopup.init();
|
||||
DateTimePickerHelper.init();
|
||||
|
||||
this._firstWindowTelemetry(aWindow);
|
||||
this._firstWindowLoaded();
|
||||
},
|
||||
|
||||
|
|
@ -1002,7 +903,6 @@ BrowserGlue.prototype = {
|
|||
delete this._bookmarksBackupIdleTime;
|
||||
}
|
||||
|
||||
BrowserUsageTelemetry.uninit();
|
||||
UserAgentOverrides.uninit();
|
||||
PageThumbs.uninit();
|
||||
NewTabMessages.uninit();
|
||||
|
|
@ -1122,20 +1022,6 @@ BrowserGlue.prototype = {
|
|||
Services.prefs.setIntPref("browser.shell.defaultBrowserCheckCount", promptCount);
|
||||
}
|
||||
|
||||
try {
|
||||
// Report default browser status on startup to telemetry
|
||||
// so we can track whether we are the default.
|
||||
Services.telemetry.getHistogramById("BROWSER_IS_USER_DEFAULT")
|
||||
.add(isDefault);
|
||||
Services.telemetry.getHistogramById("BROWSER_IS_USER_DEFAULT_ERROR")
|
||||
.add(isDefaultError);
|
||||
Services.telemetry.getHistogramById("BROWSER_SET_DEFAULT_ALWAYS_CHECK")
|
||||
.add(shouldCheck);
|
||||
Services.telemetry.getHistogramById("BROWSER_SET_DEFAULT_DIALOG_PROMPT_RAWCOUNT")
|
||||
.add(promptCount);
|
||||
}
|
||||
catch (ex) { /* Don't break the default prompt if telemetry is broken. */ }
|
||||
|
||||
if (willPrompt) {
|
||||
Services.tm.mainThread.dispatch(function() {
|
||||
DefaultBrowserCheck.prompt(RecentWindow.getMostRecentBrowserWindow());
|
||||
|
|
@ -1552,14 +1438,6 @@ BrowserGlue.prototype = {
|
|||
// available backup compared to that session.
|
||||
if (profileLastUse > lastBackupTime) {
|
||||
let backupAge = Math.round((profileLastUse - lastBackupTime) / 86400000);
|
||||
// Report the age of the last available backup.
|
||||
try {
|
||||
Services.telemetry
|
||||
.getHistogramById("PLACES_BACKUPS_DAYSFROMLAST")
|
||||
.add(backupAge);
|
||||
} catch (ex) {
|
||||
Cu.reportError(new Error("Unable to report telemetry."));
|
||||
}
|
||||
|
||||
if (backupAge > BOOKMARKS_BACKUP_MAX_INTERVAL_DAYS)
|
||||
this._bookmarksBackupIdleTime /= 2;
|
||||
|
|
@ -2408,24 +2286,12 @@ var DefaultBrowserCheck = {
|
|||
if (isDefault || runTime > 600) {
|
||||
this._setAsDefaultTimer.cancel();
|
||||
this._setAsDefaultTimer = null;
|
||||
Services.telemetry.getHistogramById("BROWSER_SET_DEFAULT_TIME_TO_COMPLETION_SECONDS")
|
||||
.add(runTime);
|
||||
}
|
||||
Services.telemetry.getHistogramById("BROWSER_IS_USER_DEFAULT_ERROR")
|
||||
.add(isDefaultError);
|
||||
}, 1000, Ci.nsITimer.TYPE_REPEATING_SLACK);
|
||||
} catch (ex) {
|
||||
setAsDefaultError = true;
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
// Here BROWSER_IS_USER_DEFAULT and BROWSER_SET_USER_DEFAULT_ERROR appear
|
||||
// to be inverse of each other, but that is only because this function is
|
||||
// called when the browser is set as the default. During startup we record
|
||||
// the BROWSER_IS_USER_DEFAULT value without recording BROWSER_SET_USER_DEFAULT_ERROR.
|
||||
Services.telemetry.getHistogramById("BROWSER_IS_USER_DEFAULT")
|
||||
.add(!setAsDefaultError);
|
||||
Services.telemetry.getHistogramById("BROWSER_SET_DEFAULT_ERROR")
|
||||
.add(setAsDefaultError);
|
||||
},
|
||||
|
||||
_createPopup: function(win, notNowStrings, neverStrings) {
|
||||
|
|
@ -2537,12 +2403,6 @@ var DefaultBrowserCheck = {
|
|||
} else if (!shouldAsk.value) {
|
||||
ShellService.shouldCheckDefaultBrowser = false;
|
||||
}
|
||||
|
||||
try {
|
||||
let resultEnum = rv * 2 + shouldAsk.value;
|
||||
Services.telemetry.getHistogramById("BROWSER_SET_DEFAULT_RESULT")
|
||||
.add(resultEnum);
|
||||
} catch (ex) { /* Don't break if Telemetry is acting up. */ }
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -980,9 +980,6 @@ function PlacesToolbar(aPlace) {
|
|||
}
|
||||
|
||||
PlacesViewBase.call(this, aPlace);
|
||||
|
||||
Services.telemetry.getHistogramById("FX_BOOKMARKS_TOOLBAR_INIT_MS")
|
||||
.add(Date.now() - startTime);
|
||||
}
|
||||
|
||||
PlacesToolbar.prototype = {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "DownloadUtils",
|
|||
"resource://gre/modules/DownloadUtils.jsm");
|
||||
|
||||
const RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
|
||||
const HISTORY_LIBRARY_SEARCH_TELEMETRY = "PLACES_HISTORY_LIBRARY_SEARCH_TIME_MS";
|
||||
|
||||
var PlacesOrganizer = {
|
||||
_places: null,
|
||||
|
|
@ -360,7 +359,6 @@ var PlacesOrganizer = {
|
|||
* cookies, history, preferences, and bookmarks.
|
||||
*/
|
||||
importFromBrowser: function() {
|
||||
// We pass in the type of source we're using for use in telemetry:
|
||||
MigrationUtils.showMigrationWizard(window, [MigrationUtils.MIGRATION_ENTRYPOINT_PLACES]);
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -40,10 +40,6 @@ var gAdvancedPane = {
|
|||
this.updateReadPrefs();
|
||||
}
|
||||
this.updateOfflineApps();
|
||||
this.initTelemetry();
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
this.initSubmitHealthReport();
|
||||
}
|
||||
this.updateOnScreenKeyboardVisibility();
|
||||
this.updateCacheSizeInputField();
|
||||
this.updateActualCacheSize();
|
||||
|
|
@ -53,10 +49,6 @@ var gAdvancedPane = {
|
|||
gAdvancedPane.updateHardwareAcceleration);
|
||||
setEventListener("advancedPrefs", "select",
|
||||
gAdvancedPane.tabSelectionChanged);
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
setEventListener("submitHealthReportBox", "command",
|
||||
gAdvancedPane.updateSubmitHealthReport);
|
||||
}
|
||||
|
||||
setEventListener("connectionSettings", "command",
|
||||
gAdvancedPane.showConnections);
|
||||
|
|
@ -107,15 +99,6 @@ var gAdvancedPane = {
|
|||
var advancedPrefs = document.getElementById("advancedPrefs");
|
||||
var preference = document.getElementById("browser.preferences.advanced.selectedTabIndex");
|
||||
|
||||
// tabSelectionChanged gets called twice due to the selectedIndex being set
|
||||
// by both the selectedItem and selectedPanel callstacks. This guard is used
|
||||
// to prevent double-counting in Telemetry.
|
||||
if (preference.valueFromPreferences != advancedPrefs.selectedIndex) {
|
||||
Services.telemetry
|
||||
.getHistogramById("FX_PREFERENCES_CATEGORY_OPENED")
|
||||
.add(telemetryBucketForCategory("advanced"));
|
||||
}
|
||||
|
||||
preference.valueFromPreferences = advancedPrefs.selectedIndex;
|
||||
},
|
||||
|
||||
|
|
@ -249,64 +232,16 @@ var gAdvancedPane = {
|
|||
"crashReporterLearnMore");
|
||||
},
|
||||
|
||||
/**
|
||||
* The preference/checkbox is configured in XUL.
|
||||
*
|
||||
* In all cases, set up the Learn More link sanely.
|
||||
*/
|
||||
initTelemetry: function ()
|
||||
{
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
this._setupLearnMoreLink("toolkit.telemetry.infoURL", "telemetryLearnMore");
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Set the status of the telemetry controls based on the input argument.
|
||||
* @param {Boolean} aEnabled False disables the controls, true enables them.
|
||||
*/
|
||||
setTelemetrySectionEnabled: function (aEnabled)
|
||||
{
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
// If FHR is disabled, additional data sharing should be disabled as well.
|
||||
let disabled = !aEnabled;
|
||||
document.getElementById("submitTelemetryBox").disabled = disabled;
|
||||
if (disabled) {
|
||||
// If we disable FHR, untick the telemetry checkbox.
|
||||
Services.prefs.setBoolPref("toolkit.telemetry.enabled", false);
|
||||
}
|
||||
document.getElementById("telemetryDataDesc").disabled = disabled;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialize the health report service reference and checkbox.
|
||||
*/
|
||||
initSubmitHealthReport: function () {
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
this._setupLearnMoreLink("datareporting.healthreport.infoURL", "FHRLearnMore");
|
||||
|
||||
let checkbox = document.getElementById("submitHealthReportBox");
|
||||
|
||||
if (Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED)) {
|
||||
checkbox.setAttribute("disabled", "true");
|
||||
return;
|
||||
}
|
||||
|
||||
checkbox.checked = Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED);
|
||||
this.setTelemetrySectionEnabled(checkbox.checked);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the health report preference with state from checkbox.
|
||||
*/
|
||||
updateSubmitHealthReport: function () {
|
||||
if (AppConstants.MOZ_TELEMETRY_REPORTING) {
|
||||
let checkbox = document.getElementById("submitHealthReportBox");
|
||||
Services.prefs.setBoolPref(PREF_UPLOAD_ENABLED, checkbox.checked);
|
||||
this.setTelemetrySectionEnabled(checkbox.checked);
|
||||
}
|
||||
},
|
||||
|
||||
updateOnScreenKeyboardVisibility() {
|
||||
|
|
|
|||
|
|
@ -47,12 +47,6 @@
|
|||
name="layout.spellcheckDefault"
|
||||
type="int"/>
|
||||
|
||||
#ifdef MOZ_TELEMETRY_REPORTING
|
||||
<preference id="toolkit.telemetry.enabled"
|
||||
name="toolkit.telemetry.enabled"
|
||||
type="bool"/>
|
||||
#endif
|
||||
|
||||
<!-- Network tab -->
|
||||
<preference id="browser.cache.disk.capacity"
|
||||
name="browser.cache.disk.capacity"
|
||||
|
|
@ -185,42 +179,6 @@
|
|||
preference="layout.spellcheckDefault"/>
|
||||
</groupbox>
|
||||
</tabpanel>
|
||||
#ifdef MOZ_DATA_REPORTING
|
||||
<!-- Data Choices -->
|
||||
<tabpanel id="dataChoicesPanel" orient="vertical">
|
||||
#ifdef MOZ_TELEMETRY_REPORTING
|
||||
<groupbox>
|
||||
<caption>
|
||||
<checkbox id="submitHealthReportBox" label="&enableHealthReport.label;"
|
||||
accesskey="&enableHealthReport.accesskey;"/>
|
||||
</caption>
|
||||
<vbox>
|
||||
<hbox class="indent">
|
||||
<label flex="1">&healthReportDesc.label;</label>
|
||||
<spacer flex="10"/>
|
||||
<label id="FHRLearnMore"
|
||||
class="text-link">&healthReportLearnMore.label;</label>
|
||||
</hbox>
|
||||
<hbox class="indent">
|
||||
<groupbox flex="1">
|
||||
<caption>
|
||||
<checkbox id="submitTelemetryBox" preference="toolkit.telemetry.enabled"
|
||||
label="&enableTelemetryData.label;"
|
||||
accesskey="&enableTelemetryData.accesskey;"/>
|
||||
</caption>
|
||||
<hbox class="indent">
|
||||
<label id="telemetryDataDesc" flex="1">&telemetryDesc.label;</label>
|
||||
<spacer flex="10"/>
|
||||
<label id="telemetryLearnMore"
|
||||
class="text-link">&telemetryLearnMore.label;</label>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
#endif
|
||||
</tabpanel>
|
||||
#endif
|
||||
|
||||
<!-- Network -->
|
||||
<tabpanel id="networkPanel" orient="vertical">
|
||||
|
|
|
|||
|
|
@ -117,11 +117,6 @@ var gContentPane = {
|
|||
|
||||
gSubDialog.open("chrome://browser/content/preferences/permissions.xul",
|
||||
"resizable=yes", params);
|
||||
|
||||
try {
|
||||
Services.telemetry
|
||||
.getHistogramById("WEB_NOTIFICATION_EXCEPTIONS_OPENED").add();
|
||||
} catch (e) {}
|
||||
},
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -124,36 +124,6 @@ function init_dynamic_padding() {
|
|||
document.documentElement.appendChild(mediaStyle);
|
||||
}
|
||||
|
||||
function telemetryBucketForCategory(category) {
|
||||
switch (category) {
|
||||
case "general":
|
||||
case "search":
|
||||
case "content":
|
||||
case "applications":
|
||||
case "privacy":
|
||||
case "security":
|
||||
case "sync":
|
||||
return category;
|
||||
case "advanced":
|
||||
let advancedPaneTabs = document.getElementById("advancedPrefs");
|
||||
switch (advancedPaneTabs.selectedTab.id) {
|
||||
case "generalTab":
|
||||
return "advancedGeneral";
|
||||
case "dataChoicesTab":
|
||||
return "advancedDataChoices";
|
||||
case "networkTab":
|
||||
return "advancedNetwork";
|
||||
case "updateTab":
|
||||
return "advancedUpdates";
|
||||
case "encryptionTab":
|
||||
return "advancedCerts";
|
||||
}
|
||||
// fall-through for unknown.
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
function onHashChange() {
|
||||
gotoPref();
|
||||
}
|
||||
|
|
@ -194,10 +164,6 @@ function gotoPref(aCategory) {
|
|||
search(category, "data-category");
|
||||
let mainContent = document.querySelector(".main-content");
|
||||
mainContent.scrollTop = 0;
|
||||
|
||||
Services.telemetry
|
||||
.getHistogramById("FX_PREFERENCES_CATEGORY_OPENED")
|
||||
.add(telemetryBucketForCategory(friendlyName));
|
||||
}
|
||||
|
||||
function search(aQuery, aAttribute) {
|
||||
|
|
|
|||
|
|
@ -8,14 +8,6 @@ var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
|||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const TELEMETRY_RESULT_ENUM = {
|
||||
RESTORED_DEFAULT: 0,
|
||||
KEPT_CURRENT: 1,
|
||||
CHANGED_ENGINE: 2,
|
||||
CLOSED_PAGE: 3,
|
||||
OPENED_SETTINGS: 4
|
||||
};
|
||||
|
||||
window.onload = function() {
|
||||
let defaultEngine = document.getElementById("defaultEngine");
|
||||
let originalDefault = Services.search.originalDefaultEngine;
|
||||
|
|
@ -24,7 +16,6 @@ window.onload = function() {
|
|||
'url("' + originalDefault.iconURI.spec + '")';
|
||||
|
||||
document.getElementById("searchResetChangeEngine").focus();
|
||||
window.addEventListener("unload", recordPageClosed);
|
||||
document.getElementById("linkSettingsPage")
|
||||
.addEventListener("click", openingSettings);
|
||||
};
|
||||
|
|
@ -46,8 +37,6 @@ function doSearch() {
|
|||
let engine = Services.search.currentEngine;
|
||||
let submission = engine.getSubmission(queryString, null, purpose);
|
||||
|
||||
window.removeEventListener("unload", recordPageClosed);
|
||||
|
||||
let win = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIWebNavigation)
|
||||
.QueryInterface(Ci.nsIDocShellTreeItem)
|
||||
|
|
@ -58,19 +47,12 @@ function doSearch() {
|
|||
}
|
||||
|
||||
function openingSettings() {
|
||||
record(TELEMETRY_RESULT_ENUM.OPENED_SETTINGS);
|
||||
window.removeEventListener("unload", recordPageClosed);
|
||||
}
|
||||
|
||||
function record(result) {
|
||||
Services.telemetry.getHistogramById("SEARCH_RESET_RESULT").add(result);
|
||||
}
|
||||
|
||||
function keepCurrentEngine() {
|
||||
// Calling the currentEngine setter will force a correct loadPathHash to be
|
||||
// written for this engine, so that we don't prompt the user again.
|
||||
Services.search.currentEngine = Services.search.currentEngine;
|
||||
record(TELEMETRY_RESULT_ENUM.KEPT_CURRENT);
|
||||
doSearch();
|
||||
}
|
||||
|
||||
|
|
@ -80,11 +62,6 @@ function changeSearchEngine() {
|
|||
engine.hidden = false;
|
||||
Services.search.currentEngine = engine;
|
||||
|
||||
record(TELEMETRY_RESULT_ENUM.RESTORED_DEFAULT);
|
||||
|
||||
doSearch();
|
||||
}
|
||||
|
||||
function recordPageClosed() {
|
||||
record(TELEMETRY_RESULT_ENUM.CLOSED_PAGE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2313,8 +2313,6 @@ SearchService.prototype = {
|
|||
this._initObservers.resolve(this._initRV);
|
||||
|
||||
Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "init-complete");
|
||||
Services.telemetry.getHistogramById("SEARCH_SERVICE_INIT_SYNC").add(true);
|
||||
this._recordEngineTelemetry();
|
||||
|
||||
LOG("_syncInit end");
|
||||
},
|
||||
|
|
@ -2352,8 +2350,6 @@ SearchService.prototype = {
|
|||
this._cacheFileJSON = null;
|
||||
this._initObservers.resolve(this._initRV);
|
||||
Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "init-complete");
|
||||
Services.telemetry.getHistogramById("SEARCH_SERVICE_INIT_SYNC").add(false);
|
||||
this._recordEngineTelemetry();
|
||||
|
||||
LOG("_asyncInit: Completed _asyncInit");
|
||||
}),
|
||||
|
|
@ -2719,7 +2715,6 @@ SearchService.prototype = {
|
|||
// Typically we'll re-init as a result of a pref observer,
|
||||
// so signal to 'callers' that we're done.
|
||||
Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "init-complete");
|
||||
this._recordEngineTelemetry();
|
||||
gInitialized = true;
|
||||
} catch (err) {
|
||||
LOG("Reinit failed: " + err);
|
||||
|
|
@ -3896,25 +3891,6 @@ SearchService.prototype = {
|
|||
return result;
|
||||
},
|
||||
|
||||
_recordEngineTelemetry: function() {
|
||||
Services.telemetry.getHistogramById("SEARCH_SERVICE_ENGINE_COUNT")
|
||||
.add(Object.keys(this._engines).length);
|
||||
let hasUpdates = false;
|
||||
let hasIconUpdates = false;
|
||||
for (let name in this._engines) {
|
||||
let engine = this._engines[name];
|
||||
if (engine._hasUpdates) {
|
||||
hasUpdates = true;
|
||||
if (engine._iconUpdateURL) {
|
||||
hasIconUpdates = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Services.telemetry.getHistogramById("SEARCH_SERVICE_HAS_UPDATES").add(hasUpdates);
|
||||
Services.telemetry.getHistogramById("SEARCH_SERVICE_HAS_ICON_UPDATES").add(hasIconUpdates);
|
||||
},
|
||||
|
||||
/**
|
||||
* This map is built lazily after the available search engines change. It
|
||||
* allows quick parsing of an URL representing a search submission into the
|
||||
|
|
|
|||
|
|
@ -12,13 +12,6 @@ Cu.import("resource://gre/modules/Preferences.jsm");
|
|||
|
||||
const PREF_FHR_UPLOAD_ENABLED = "datareporting.healthreport.uploadEnabled";
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "TelemetryArchive",
|
||||
"resource://gre/modules/TelemetryArchive.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "TelemetryEnvironment",
|
||||
"resource://gre/modules/TelemetryEnvironment.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "TelemetryController",
|
||||
"resource://gre/modules/TelemetryController.jsm");
|
||||
|
||||
function MozSelfSupportInterface() {
|
||||
}
|
||||
|
||||
|
|
@ -51,24 +44,6 @@ MozSelfSupportInterface.prototype = {
|
|||
Services.search.resetToOriginalDefaultEngine();
|
||||
},
|
||||
|
||||
getTelemetryPingList: function() {
|
||||
return this._wrapPromise(TelemetryArchive.promiseArchivedPingList());
|
||||
},
|
||||
|
||||
getTelemetryPing: function(pingId) {
|
||||
return this._wrapPromise(TelemetryArchive.promiseArchivedPingById(pingId));
|
||||
},
|
||||
|
||||
getCurrentTelemetryEnvironment: function() {
|
||||
const current = TelemetryEnvironment.currentEnvironment;
|
||||
return new this._window.Promise(resolve => resolve(current));
|
||||
},
|
||||
|
||||
getCurrentTelemetrySubsessionPing: function() {
|
||||
const current = TelemetryController.getCurrentPingData(true);
|
||||
return new this._window.Promise(resolve => resolve(current));
|
||||
},
|
||||
|
||||
_wrapPromise: function(promise) {
|
||||
return new this._window.Promise(
|
||||
(resolve, reject) => promise.then(resolve, reject));
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "RunState",
|
|||
"resource:///modules/sessionstore/RunState.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
|
||||
"@mozilla.org/base/telemetry;1", "nsITelemetry");
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "sessionStartup",
|
||||
"@mozilla.org/browser/sessionstartup;1", "nsISessionStartup");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "SessionWorker",
|
||||
|
|
@ -234,10 +232,6 @@ var SessionFileInternal = {
|
|||
source: source,
|
||||
parsed: parsed
|
||||
};
|
||||
Telemetry.getHistogramById("FX_SESSION_RESTORE_CORRUPT_FILE").
|
||||
add(false);
|
||||
Telemetry.getHistogramById("FX_SESSION_RESTORE_READ_FILE_MS").
|
||||
add(Date.now() - startMs);
|
||||
break;
|
||||
} catch (ex if ex instanceof OS.File.Error && ex.becauseNoSuchFile) {
|
||||
exists = false;
|
||||
|
|
@ -253,16 +247,12 @@ var SessionFileInternal = {
|
|||
} finally {
|
||||
if (exists) {
|
||||
noFilesFound = false;
|
||||
Telemetry.getHistogramById("FX_SESSION_RESTORE_CORRUPT_FILE").
|
||||
add(corrupted);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// All files are corrupted if files found but none could deliver a result.
|
||||
let allCorrupt = !noFilesFound && !result;
|
||||
Telemetry.getHistogramById("FX_SESSION_RESTORE_ALL_FILES_CORRUPT").
|
||||
add(allCorrupt);
|
||||
|
||||
if (!result) {
|
||||
// If everything fails, start with an empty session.
|
||||
|
|
@ -331,7 +321,6 @@ var SessionFileInternal = {
|
|||
// Wait until the write is done.
|
||||
promise = promise.then(msg => {
|
||||
// Record how long the write took.
|
||||
this._recordTelemetry(msg.telemetry);
|
||||
this._successes++;
|
||||
if (msg.result.upgradeBackup) {
|
||||
// We have just completed a backup-on-upgrade, store the information
|
||||
|
|
@ -379,19 +368,4 @@ var SessionFileInternal = {
|
|||
return this._postToWorker("wipe");
|
||||
},
|
||||
|
||||
_recordTelemetry: function(telemetry) {
|
||||
for (let id of Object.keys(telemetry)){
|
||||
let value = telemetry[id];
|
||||
let samples = [];
|
||||
if (Array.isArray(value)) {
|
||||
samples.push(...value);
|
||||
} else {
|
||||
samples.push(value);
|
||||
}
|
||||
let histogram = Telemetry.getHistogramById(id);
|
||||
for (let sample of samples) {
|
||||
histogram.add(sample);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -135,7 +135,6 @@ Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm", this);
|
|||
Cu.import("resource://gre/modules/Promise.jsm", this);
|
||||
Cu.import("resource://gre/modules/Services.jsm", this);
|
||||
Cu.import("resource://gre/modules/Task.jsm", this);
|
||||
Cu.import("resource://gre/modules/TelemetryTimestamps.jsm", this);
|
||||
Cu.import("resource://gre/modules/Timer.jsm", this);
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
|
||||
Cu.import("resource://gre/modules/debug.js", this);
|
||||
|
|
@ -145,8 +144,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "gSessionStartup",
|
|||
"@mozilla.org/browser/sessionstartup;1", "nsISessionStartup");
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "gScreenManager",
|
||||
"@mozilla.org/gfx/screenmanager;1", "nsIScreenManager");
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
|
||||
"@mozilla.org/base/telemetry;1", "nsITelemetry");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "console",
|
||||
"resource://gre/modules/Console.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
|
||||
|
|
@ -550,7 +547,6 @@ var SessionStoreInternal = {
|
|||
throw new Error("SessionStore.init() must only be called once!");
|
||||
}
|
||||
|
||||
TelemetryTimestamps.add("sessionRestoreInitialized");
|
||||
OBSERVING.forEach(function(aTopic) {
|
||||
Services.obs.addObserver(this, aTopic, true);
|
||||
}, this);
|
||||
|
|
@ -782,9 +778,8 @@ var SessionStoreInternal = {
|
|||
return;
|
||||
}
|
||||
|
||||
// Record telemetry measurements done in the child and update the tab's
|
||||
// cached state. Mark the window as dirty and trigger a delayed write.
|
||||
this.recordTelemetry(aMessage.data.telemetry);
|
||||
// Update the tab's cached state.
|
||||
// Mark the window as dirty and trigger a delayed write.
|
||||
TabState.update(browser, aMessage.data);
|
||||
this.saveStateDelayed(win);
|
||||
|
||||
|
|
@ -919,18 +914,6 @@ var SessionStoreInternal = {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Record telemetry measurements stored in an object.
|
||||
* @param telemetry
|
||||
* {histogramID: value, ...} An object mapping histogramIDs to the
|
||||
* value to be recorded for that ID,
|
||||
*/
|
||||
recordTelemetry: function (telemetry) {
|
||||
for (let histogramId in telemetry){
|
||||
Telemetry.getHistogramById(histogramId).add(telemetry[histogramId]);
|
||||
}
|
||||
},
|
||||
|
||||
/* ........ Window Event Handlers .............. */
|
||||
|
||||
/**
|
||||
|
|
@ -1081,7 +1064,6 @@ var SessionStoreInternal = {
|
|||
// Nothing to restore now, notify observers things are complete.
|
||||
Services.obs.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, "");
|
||||
} else {
|
||||
TelemetryTimestamps.add("sessionRestoreRestoring");
|
||||
this._restoreCount = aInitialState.windows ? aInitialState.windows.length : 0;
|
||||
|
||||
// global data must be restored before restoreWindow is called so that
|
||||
|
|
@ -3810,8 +3792,7 @@ var SessionStoreInternal = {
|
|||
},
|
||||
|
||||
/**
|
||||
* Update the session start time and send a telemetry measurement
|
||||
* for the number of days elapsed since the session was started.
|
||||
* Update the session start time.
|
||||
*
|
||||
* @param state
|
||||
* The session state.
|
||||
|
|
@ -4437,13 +4418,7 @@ var SessionStoreInternal = {
|
|||
* Handle an error report from a content process.
|
||||
*/
|
||||
reportInternalError(data) {
|
||||
// For the moment, we only report errors through Telemetry.
|
||||
if (data.telemetry) {
|
||||
for (let key of Object.keys(data.telemetry)) {
|
||||
let histogram = Telemetry.getHistogramById(key);
|
||||
histogram.add(data.telemetry[key]);
|
||||
}
|
||||
}
|
||||
// STUB, was only reported through Telemetry.
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -126,7 +126,6 @@ var Agent = {
|
|||
*/
|
||||
write: function (state, options = {}) {
|
||||
let exn;
|
||||
let telemetry = {};
|
||||
|
||||
// Cap the number of backward and forward shistory entries on shutdown.
|
||||
if (options.isFinalWrite) {
|
||||
|
|
@ -197,9 +196,6 @@ var Agent = {
|
|||
});
|
||||
}
|
||||
|
||||
telemetry.FX_SESSION_RESTORE_WRITE_FILE_MS = Date.now() - startWriteMs;
|
||||
telemetry.FX_SESSION_RESTORE_FILE_SIZE_BYTES = data.byteLength;
|
||||
|
||||
} catch (ex) {
|
||||
// Don't throw immediately
|
||||
exn = exn || ex;
|
||||
|
|
@ -276,7 +272,6 @@ var Agent = {
|
|||
result: {
|
||||
upgradeBackup: upgradeBackupComplete
|
||||
},
|
||||
telemetry: telemetry,
|
||||
};
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -111,18 +111,6 @@ this.StartupPerformance = {
|
|||
return;
|
||||
}
|
||||
|
||||
// Once we are done restoring tabs, update Telemetry.
|
||||
let histogramName = isAutoRestore ?
|
||||
"FX_SESSION_RESTORE_AUTO_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS" :
|
||||
"FX_SESSION_RESTORE_MANUAL_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS";
|
||||
let histogram = Services.telemetry.getHistogramById(histogramName);
|
||||
let delta = this._latestRestoredTimeStamp - this._startTimeStamp;
|
||||
histogram.add(delta);
|
||||
|
||||
Services.telemetry.getHistogramById("FX_SESSION_RESTORE_NUMBER_OF_EAGER_TABS_RESTORED").add(this._totalNumberOfEagerTabs);
|
||||
Services.telemetry.getHistogramById("FX_SESSION_RESTORE_NUMBER_OF_TABS_RESTORED").add(this._totalNumberOfTabs);
|
||||
Services.telemetry.getHistogramById("FX_SESSION_RESTORE_NUMBER_OF_WINDOWS_RESTORED").add(this._totalNumberOfWindows);
|
||||
|
||||
// Reset
|
||||
this._startTimeStamp = null;
|
||||
} catch (ex) {
|
||||
|
|
|
|||
|
|
@ -628,7 +628,6 @@ var SessionStorageListener = {
|
|||
|
||||
let size = this.estimateStorageSize(collected);
|
||||
|
||||
MessageQueue.push("telemetry", () => ({ FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS: size }));
|
||||
if (size > Preferences.get("browser.sessionstore.dom_storage_limit", DOM_STORAGE_MAX_CHARS)) {
|
||||
// Rather than keeping the old storage, which wouldn't match the rest
|
||||
// of the state of the page, empty the storage. DOM storage will be
|
||||
|
|
@ -800,37 +799,23 @@ var MessageQueue = {
|
|||
let durationMs = Date.now();
|
||||
|
||||
let data = {};
|
||||
let telemetry = {};
|
||||
for (let [key, func] of this._data) {
|
||||
let value = func();
|
||||
if (key == "telemetry") {
|
||||
for (let histogramId of Object.keys(value)) {
|
||||
telemetry[histogramId] = value[histogramId];
|
||||
}
|
||||
} else if (value || (key != "storagechange" && key != "historychange")) {
|
||||
if (value || (key != "storagechange" && key != "historychange")) {
|
||||
data[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
this._data.clear();
|
||||
|
||||
durationMs = Date.now() - durationMs;
|
||||
telemetry.FX_SESSION_RESTORE_CONTENT_COLLECT_DATA_LONGEST_OP_MS = durationMs;
|
||||
|
||||
try {
|
||||
// Send all data to the parent process.
|
||||
sendAsyncMessage("SessionStore:update", {
|
||||
data, telemetry, flushID,
|
||||
data, flushID,
|
||||
isFinal: options.isFinal || false,
|
||||
epoch: gCurrentEpoch
|
||||
});
|
||||
} catch (ex if ex && ex.result == Cr.NS_ERROR_OUT_OF_MEMORY) {
|
||||
let telemetry = {
|
||||
FX_SESSION_RESTORE_SEND_UPDATE_CAUSED_OOM: 1
|
||||
};
|
||||
sendAsyncMessage("SessionStore:error", {
|
||||
telemetry
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -203,11 +203,6 @@ SessionStartup.prototype = {
|
|||
}
|
||||
}
|
||||
|
||||
// Report shutdown success via telemetry. Shortcoming here are
|
||||
// being-killed-by-OS-shutdown-logic, shutdown freezing after
|
||||
// session restore was written, etc.
|
||||
Services.telemetry.getHistogramById("SHUTDOWN_OK").add(!this._previousSessionCrashed);
|
||||
|
||||
// set the startup type
|
||||
if (this._previousSessionCrashed && resumeFromCrash)
|
||||
this._sessionType = Ci.nsISessionStartup.RECOVER_SESSION;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue