Bug 1665618. Fallback to allowing printing in color on failure to get printer capabilities. r=bobowen

Differential Revision: https://phabricator.services.mozilla.com/D90546
This commit is contained in:
Jonathan Watt 2020-09-17 12:14:25 +00:00
Родитель 96ac4b6334
Коммит f3000d3646
3 изменённых файлов: 13 добавлений и 8 удалений

Просмотреть файл

@ -28,7 +28,10 @@ namespace mozilla {
struct PrintSettingsInitializer {
nsString mPrinter;
PaperInfo mPaperInfo;
bool mPrintInColor = false;
// If we fail to obtain printer capabilities, being given the option to print
// in color to your monochrome printer is a lot less annoying than not being
// given the option to print in color to your color printer.
bool mPrintInColor = true;
int mResolution = 0;
#ifdef XP_WIN
CopyableTArray<uint8_t> mDevmodeWStorage;

Просмотреть файл

@ -101,7 +101,6 @@ PrintSettingsInitializer nsPrinterCUPS::DefaultSettings() const {
CUPS_MEDIA_FLAGS_DEFAULT, &media);
if (!hasDefaultMedia) {
Nothing();
return PrintSettingsInitializer{
std::move(printerName),
PaperInfo(),
@ -184,10 +183,11 @@ bool nsPrinterCUPS::SupportsColor() const {
// results for CUPS_PRINT_COLOR_MODE.
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1660658#c15
if (!IsCUPSVersionAtLeast(2, 2, 0)) {
return true;
return true; // See comment for PrintSettingsInitializer.mPrintInColor
}
return Supports(CUPS_PRINT_COLOR_MODE, CUPS_PRINT_COLOR_MODE_COLOR) ||
Supports(CUPS_PRINT_COLOR_MODE, CUPS_PRINT_COLOR_MODE_AUTO);
return Supports(CUPS_PRINT_COLOR_MODE, CUPS_PRINT_COLOR_MODE_AUTO) ||
Supports(CUPS_PRINT_COLOR_MODE, CUPS_PRINT_COLOR_MODE_COLOR) ||
!Supports(CUPS_PRINT_COLOR_MODE, CUPS_PRINT_COLOR_MODE_MONOCHROME);
}
bool nsPrinterCUPS::SupportsCollation() const {

Просмотреть файл

@ -71,7 +71,7 @@ PrintSettingsInitializer nsPrinterWin::DefaultSettings() const {
SizeDouble paperSize{8.5 * 72.0, 11.0 * 72.0};
gfx::MarginDouble margin;
int resolution = 0;
bool color = false;
bool color = true;
nsTArray<uint8_t> devmodeWStorage;
bool success = WithDefaultDevMode(
@ -105,8 +105,10 @@ PrintSettingsInitializer nsPrinterWin::DefaultSettings() const {
// Using Y to match existing code for print scaling calculations.
resolution = GetDeviceCaps(printerDc, LOGPIXELSY);
color =
(devmode->dmFields & DM_COLOR) && devmode->dmColor == DMCOLOR_COLOR;
if (devmode->dmFields & DM_COLOR) {
// See comment for PrintSettingsInitializer.mPrintInColor
color = devmode->dmColor != DMCOLOR_MONOCHROME;
}
return true;
});