mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 07:45:30 +00:00
Bug 1668242, report printing errors in telemetry in the frontend r=mstriemer
Differential Revision: https://phabricator.services.mozilla.com/D93419
This commit is contained in:
parent
db6627077f
commit
70754a80e3
@ -188,13 +188,23 @@ var PrintEventHandler = {
|
||||
|
||||
// First check the available destinations to ensure we get settings for an
|
||||
// accessible printer.
|
||||
let {
|
||||
destinations,
|
||||
let destinations,
|
||||
defaultSystemPrinter,
|
||||
fallbackPaperList,
|
||||
selectedPrinter,
|
||||
printersByName,
|
||||
} = await this.getPrintDestinations();
|
||||
printersByName;
|
||||
try {
|
||||
({
|
||||
destinations,
|
||||
defaultSystemPrinter,
|
||||
fallbackPaperList,
|
||||
selectedPrinter,
|
||||
printersByName,
|
||||
} = await this.getPrintDestinations());
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PRINT_DESTINATIONS");
|
||||
throw e;
|
||||
}
|
||||
PrintSettingsViewProxy.availablePrinters = printersByName;
|
||||
PrintSettingsViewProxy.fallbackPaperList = fallbackPaperList;
|
||||
PrintSettingsViewProxy.defaultSystemPrinter = defaultSystemPrinter;
|
||||
@ -357,9 +367,15 @@ var PrintEventHandler = {
|
||||
},
|
||||
|
||||
async refreshSettings(printerName) {
|
||||
let currentPrinter = await PrintSettingsViewProxy.resolvePropertiesForPrinter(
|
||||
printerName
|
||||
);
|
||||
let currentPrinter;
|
||||
try {
|
||||
currentPrinter = await PrintSettingsViewProxy.resolvePropertiesForPrinter(
|
||||
printerName
|
||||
);
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PRINTER_PROPERTIES");
|
||||
throw e;
|
||||
}
|
||||
this.settings = currentPrinter.settings;
|
||||
this.defaultSettings = currentPrinter.defaultSettings;
|
||||
|
||||
@ -513,9 +529,14 @@ var PrintEventHandler = {
|
||||
if (printerChanged || changedSettings.paperId) {
|
||||
// The paper's margin properties are async,
|
||||
// so resolve those now before we update the settings
|
||||
await PrintSettingsViewProxy.fetchPaperMargins(
|
||||
changedSettings.paperId || this.viewSettings.paperId
|
||||
);
|
||||
try {
|
||||
await PrintSettingsViewProxy.fetchPaperMargins(
|
||||
changedSettings.paperId || this.viewSettings.paperId
|
||||
);
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PAPER_MARGINS");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
for (let [setting, value] of Object.entries(changedSettings)) {
|
||||
@ -601,10 +622,16 @@ var PrintEventHandler = {
|
||||
|
||||
// This resolves with a PrintPreviewSuccessInfo dictionary. That also has
|
||||
// a `sheetCount` property available which we should use (bug 1662331).
|
||||
let {
|
||||
totalPageCount,
|
||||
hasSelection,
|
||||
} = await previewBrowser.frameLoader.printPreview(settings, sourceWinId);
|
||||
let totalPageCount, hasSelection;
|
||||
try {
|
||||
({
|
||||
totalPageCount,
|
||||
hasSelection,
|
||||
} = await previewBrowser.frameLoader.printPreview(settings, sourceWinId));
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PRINT_PREVIEW");
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Send the page count and show the preview.
|
||||
let numPages = totalPageCount;
|
||||
@ -661,11 +688,29 @@ var PrintEventHandler = {
|
||||
if (Cu.isInAutomation) {
|
||||
printers = await Promise.resolve(window._mockPrinters || []);
|
||||
} else {
|
||||
printers = await printerList.printers;
|
||||
try {
|
||||
printers = await printerList.printers;
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PRINTER_LIST");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
const fallbackPaperList = await printerList.fallbackPaperList;
|
||||
const lastUsedPrinterName = PSSVC.lastUsedPrinterName;
|
||||
let fallbackPaperList;
|
||||
try {
|
||||
fallbackPaperList = await printerList.fallbackPaperList;
|
||||
} catch (e) {
|
||||
this.reportPrintingError("FALLBACK_PAPER_LIST");
|
||||
throw e;
|
||||
}
|
||||
|
||||
let lastUsedPrinterName;
|
||||
try {
|
||||
lastUsedPrinterName = PSSVC.lastUsedPrinterName;
|
||||
} catch (e) {
|
||||
this.reportPrintingError("LAST_USED_PRINTER");
|
||||
throw e;
|
||||
}
|
||||
const defaultPrinterName = printerList.systemDefaultPrinterName;
|
||||
const printersByName = {};
|
||||
|
||||
@ -768,6 +813,10 @@ var PrintEventHandler = {
|
||||
}
|
||||
},
|
||||
|
||||
reportPrintingError(aMessage) {
|
||||
Services.telemetry.keyedScalarAdd("printing.error", aMessage, 1);
|
||||
},
|
||||
|
||||
/**
|
||||
* Prints the window. This method has been abstracted into a helper for
|
||||
* testing purposes.
|
||||
@ -892,7 +941,13 @@ var PrintSettingsViewProxy = {
|
||||
// We've already resolved and calculated these values
|
||||
return;
|
||||
}
|
||||
let margins = await paperInfo.paper.unwriteableMargin;
|
||||
let margins;
|
||||
try {
|
||||
margins = await paperInfo.paper.unwriteableMargin;
|
||||
} catch (e) {
|
||||
this.reportPrintingError("UNWRITEABLE_MARGIN");
|
||||
throw e;
|
||||
}
|
||||
margins.QueryInterface(Ci.nsIPaperMargin);
|
||||
|
||||
// margin dimenions are given on the paper in points, setting values need to be in inches
|
||||
@ -915,18 +970,23 @@ var PrintSettingsViewProxy = {
|
||||
|
||||
// Await the async printer data.
|
||||
if (printerInfo.printer) {
|
||||
[
|
||||
printerInfo.supportsColor,
|
||||
printerInfo.supportsMonochrome,
|
||||
printerInfo.paperList,
|
||||
printerInfo.defaultSettings,
|
||||
] = await Promise.all([
|
||||
printerInfo.printer.supportsColor,
|
||||
printerInfo.printer.supportsMonochrome,
|
||||
printerInfo.printer.paperList,
|
||||
// get a set of default settings for this printer
|
||||
printerInfo.printer.createDefaultSettings(printerName),
|
||||
]);
|
||||
try {
|
||||
[
|
||||
printerInfo.supportsColor,
|
||||
printerInfo.supportsMonochrome,
|
||||
printerInfo.paperList,
|
||||
printerInfo.defaultSettings,
|
||||
] = await Promise.all([
|
||||
printerInfo.printer.supportsColor,
|
||||
printerInfo.printer.supportsMonochrome,
|
||||
printerInfo.printer.paperList,
|
||||
// get a set of default settings for this printer
|
||||
printerInfo.printer.createDefaultSettings(printerName),
|
||||
]);
|
||||
} catch (e) {
|
||||
this.reportPrintingError("PRINTER_SETTINGS");
|
||||
throw e;
|
||||
}
|
||||
printerInfo.defaultSettings.QueryInterface(Ci.nsIPrintSettings);
|
||||
} else if (printerName == PrintUtils.SAVE_TO_PDF_PRINTER) {
|
||||
// The Mozilla PDF pseudo-printer has no actual nsIPrinter implementation
|
||||
|
@ -4127,6 +4127,15 @@ printing:
|
||||
- 'OUT_OF_MEMORY'
|
||||
- 'UNEXPECTED'
|
||||
- 'FAILURE'
|
||||
- 'FALLBACK_PAPER_LIST'
|
||||
- 'LAST_USED_PRINTER'
|
||||
- 'PAPER_MARGINS'
|
||||
- 'PRINT_DESTINATIONS'
|
||||
- 'PRINT_PREVIEW'
|
||||
- 'PRINTER_LIST'
|
||||
- 'PRINTER_PROPERTIES'
|
||||
- 'PRINTER_SETTINGS'
|
||||
- 'UNWRITEABLE_MARGIN'
|
||||
expires: never
|
||||
kind: uint
|
||||
notification_emails:
|
||||
|
Loading…
Reference in New Issue
Block a user