Commit 75c782b7 authored by Daniel Hosseinian's avatar Daniel Hosseinian Committed by Commit Bot

Re-enable Epson color printing on Linux

Capitalize Epson CUPS color values to potentially fix a problem where
the Epson filter is not detecting the color mode and prints data
intended for color in monochrome.

Bug: 1081705
Change-Id: Ic192d9809dca2101988fe00da7decc5b1002de1b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2285180
Commit-Queue: Daniel Hosseinian <dhoss@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#786182}
parent 3ec9e2cc
...@@ -48,10 +48,6 @@ constexpr char kCupsMaxCopies[] = "cupsMaxCopies"; ...@@ -48,10 +48,6 @@ constexpr char kCupsMaxCopies[] = "cupsMaxCopies";
constexpr char kColorDevice[] = "ColorDevice"; constexpr char kColorDevice[] = "ColorDevice";
constexpr char kColorModel[] = "ColorModel"; constexpr char kColorModel[] = "ColorModel";
constexpr char kColorMode[] = "ColorMode"; constexpr char kColorMode[] = "ColorMode";
// TODO(crbug.com/1081705): Epson "Ink" attribute bloats prints on Linux.
#if !defined(OS_LINUX)
constexpr char kInk[] = "Ink";
#endif
constexpr char kProcessColorModel[] = "ProcessColorModel"; constexpr char kProcessColorModel[] = "ProcessColorModel";
constexpr char kPrintoutMode[] = "PrintoutMode"; constexpr char kPrintoutMode[] = "PrintoutMode";
constexpr char kDraftGray[] = "Draft.Gray"; constexpr char kDraftGray[] = "Draft.Gray";
...@@ -68,6 +64,11 @@ constexpr char kBrotherDuplex[] = "BRDuplex"; ...@@ -68,6 +64,11 @@ constexpr char kBrotherDuplex[] = "BRDuplex";
constexpr char kBrotherMonoColor[] = "BRMonoColor"; constexpr char kBrotherMonoColor[] = "BRMonoColor";
constexpr char kBrotherPrintQuality[] = "BRPrintQuality"; constexpr char kBrotherPrintQuality[] = "BRPrintQuality";
// Epson printer specific options.
constexpr char kEpsonInk[] = "Ink";
constexpr char kEpsonColor[] = "COLOR";
constexpr char kEpsonMono[] = "MONO";
// HP printer specific options. // HP printer specific options.
constexpr char kHpColorMode[] = "HPColorMode"; constexpr char kHpColorMode[] = "HPColorMode";
constexpr char kHpColorPrint[] = "ColorPrint"; constexpr char kHpColorPrint[] = "ColorPrint";
...@@ -333,23 +334,21 @@ bool GetHPColorModeSettings(ppd_file_t* ppd, ...@@ -333,23 +334,21 @@ bool GetHPColorModeSettings(ppd_file_t* ppd,
return true; return true;
} }
// TODO(crbug.com/1081705): Epson "Ink" attribute bloats prints on Linux.
#if !defined(OS_LINUX)
bool GetEpsonInkSettings(ppd_file_t* ppd, bool GetEpsonInkSettings(ppd_file_t* ppd,
ColorModel* color_model_for_black, ColorModel* color_model_for_black,
ColorModel* color_model_for_color, ColorModel* color_model_for_color,
bool* color_is_default) { bool* color_is_default) {
// Epson printers use "Ink" attribute in their PPDs. // Epson printers use "Ink" attribute in their PPDs.
ppd_option_t* color_mode_option = ppdFindOption(ppd, kInk); ppd_option_t* color_mode_option = ppdFindOption(ppd, kEpsonInk);
if (!color_mode_option) if (!color_mode_option)
return false; return false;
if (ppdFindChoice(color_mode_option, kColor)) if (ppdFindChoice(color_mode_option, kEpsonColor))
*color_model_for_color = EPSON_INK_COLOR; *color_model_for_color = EPSON_INK_COLOR;
if (ppdFindChoice(color_mode_option, kMono)) if (ppdFindChoice(color_mode_option, kEpsonMono))
*color_model_for_black = EPSON_INK_MONO; *color_model_for_black = EPSON_INK_MONO;
ppd_choice_t* mode_choice = ppdFindMarkedChoice(ppd, kInk); ppd_choice_t* mode_choice = ppdFindMarkedChoice(ppd, kEpsonInk);
if (!mode_choice) { if (!mode_choice) {
mode_choice = mode_choice =
ppdFindChoice(color_mode_option, color_mode_option->defchoice); ppdFindChoice(color_mode_option, color_mode_option->defchoice);
...@@ -360,7 +359,6 @@ bool GetEpsonInkSettings(ppd_file_t* ppd, ...@@ -360,7 +359,6 @@ bool GetEpsonInkSettings(ppd_file_t* ppd,
} }
return true; return true;
} }
#endif // !defined(OS_LINUX)
bool GetSharpARCModeSettings(ppd_file_t* ppd, bool GetSharpARCModeSettings(ppd_file_t* ppd,
ColorModel* color_model_for_black, ColorModel* color_model_for_black,
...@@ -465,10 +463,7 @@ bool GetColorModelSettings(ppd_file_t* ppd, ...@@ -465,10 +463,7 @@ bool GetColorModelSettings(ppd_file_t* ppd,
GetHPColorSettings(ppd, cm_black, cm_color, is_color) || GetHPColorSettings(ppd, cm_black, cm_color, is_color) ||
GetHPColorModeSettings(ppd, cm_black, cm_color, is_color) || GetHPColorModeSettings(ppd, cm_black, cm_color, is_color) ||
GetBrotherColorSettings(ppd, cm_black, cm_color, is_color) || GetBrotherColorSettings(ppd, cm_black, cm_color, is_color) ||
// TODO(crbug.com/1081705): Epson "Ink" attribute bloats prints on Linux.
#if !defined(OS_LINUX)
GetEpsonInkSettings(ppd, cm_black, cm_color, is_color) || GetEpsonInkSettings(ppd, cm_black, cm_color, is_color) ||
#endif
GetSharpARCModeSettings(ppd, cm_black, cm_color, is_color) || GetSharpARCModeSettings(ppd, cm_black, cm_color, is_color) ||
GetXeroxColorSettings(ppd, cm_black, cm_color, is_color) || GetXeroxColorSettings(ppd, cm_black, cm_color, is_color) ||
GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color); GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color);
......
...@@ -375,13 +375,7 @@ TEST(PrintBackendCupsHelperTest, TestPpdParsingHpPrinters) { ...@@ -375,13 +375,7 @@ TEST(PrintBackendCupsHelperTest, TestPpdParsingHpPrinters) {
VerifyCapabilityColorModels(caps); VerifyCapabilityColorModels(caps);
} }
// TODO(crbug.com/1081705): Epson "Ink" attribute bloats prints on Linux. TEST(PrintBackendCupsHelperTest, TestPpdParsingEpsonPrinters) {
#if defined(OS_LINUX)
#define MAYBE_TestPpdParsingEpsonPrinters DISABLED_TestPpdParsingEpsonPrinters
#else
#define MAYBE_TestPpdParsingEpsonPrinters TestPpdParsingEpsonPrinters
#endif
TEST(PrintBackendCupsHelperTest, MAYBE_TestPpdParsingEpsonPrinters) {
constexpr char kTestPpdData[] = constexpr char kTestPpdData[] =
R"(*PPD-Adobe: "4.3" R"(*PPD-Adobe: "4.3"
*ColorDevice: True *ColorDevice: True
......
...@@ -216,6 +216,8 @@ const char kKCMY[] = "KCMY"; ...@@ -216,6 +216,8 @@ const char kKCMY[] = "KCMY";
const char kCMY_K[] = "CMY+K"; const char kCMY_K[] = "CMY+K";
const char kCMY[] = "CMY"; const char kCMY[] = "CMY";
const char kColor[] = "Color"; const char kColor[] = "Color";
const char kEpsonColor[] = "COLOR";
const char kEpsonMono[] = "MONO";
const char kFullColor[] = "FullColor"; const char kFullColor[] = "FullColor";
const char kGray[] = "Gray"; const char kGray[] = "Gray";
const char kGrayscale[] = "Grayscale"; const char kGrayscale[] = "Grayscale";
......
...@@ -88,6 +88,8 @@ PRINTING_EXPORT extern const char kKCMY[]; ...@@ -88,6 +88,8 @@ PRINTING_EXPORT extern const char kKCMY[];
PRINTING_EXPORT extern const char kCMY_K[]; PRINTING_EXPORT extern const char kCMY_K[];
PRINTING_EXPORT extern const char kCMY[]; PRINTING_EXPORT extern const char kCMY[];
PRINTING_EXPORT extern const char kColor[]; PRINTING_EXPORT extern const char kColor[];
PRINTING_EXPORT extern const char kEpsonColor[];
PRINTING_EXPORT extern const char kEpsonMono[];
PRINTING_EXPORT extern const char kFullColor[]; PRINTING_EXPORT extern const char kFullColor[];
PRINTING_EXPORT extern const char kGray[]; PRINTING_EXPORT extern const char kGray[];
PRINTING_EXPORT extern const char kGrayscale[]; PRINTING_EXPORT extern const char kGrayscale[];
......
...@@ -41,9 +41,9 @@ void GetColorModelForMode(int color_mode, ...@@ -41,9 +41,9 @@ void GetColorModelForMode(int color_mode,
constexpr char kCUPSColorModel[] = "ColorModel"; constexpr char kCUPSColorModel[] = "ColorModel";
constexpr char kCUPSPrintoutMode[] = "PrintoutMode"; constexpr char kCUPSPrintoutMode[] = "PrintoutMode";
constexpr char kCUPSProcessColorModel[] = "ProcessColorModel"; constexpr char kCUPSProcessColorModel[] = "ProcessColorModel";
constexpr char kCUPSInk[] = "Ink";
constexpr char kCUPSBrotherMonoColor[] = "BRMonoColor"; constexpr char kCUPSBrotherMonoColor[] = "BRMonoColor";
constexpr char kCUPSBrotherPrintQuality[] = "BRPrintQuality"; constexpr char kCUPSBrotherPrintQuality[] = "BRPrintQuality";
constexpr char kCUPSEpsonInk[] = "Ink";
constexpr char kCUPSSharpARCMode[] = "ARCMode"; constexpr char kCUPSSharpARCMode[] = "ARCMode";
constexpr char kCUPSXeroxXRXColor[] = "XRXColor"; constexpr char kCUPSXeroxXRXColor[] = "XRXColor";
#else #else
...@@ -51,9 +51,9 @@ void GetColorModelForMode(int color_mode, ...@@ -51,9 +51,9 @@ void GetColorModelForMode(int color_mode,
constexpr char kCUPSColorModel[] = "cups-ColorModel"; constexpr char kCUPSColorModel[] = "cups-ColorModel";
constexpr char kCUPSPrintoutMode[] = "cups-PrintoutMode"; constexpr char kCUPSPrintoutMode[] = "cups-PrintoutMode";
constexpr char kCUPSProcessColorModel[] = "cups-ProcessColorModel"; constexpr char kCUPSProcessColorModel[] = "cups-ProcessColorModel";
constexpr char kCUPSInk[] = "cups-Ink";
constexpr char kCUPSBrotherMonoColor[] = "cups-BRMonoColor"; constexpr char kCUPSBrotherMonoColor[] = "cups-BRMonoColor";
constexpr char kCUPSBrotherPrintQuality[] = "cups-BRPrintQuality"; constexpr char kCUPSBrotherPrintQuality[] = "cups-BRPrintQuality";
constexpr char kCUPSEpsonInk[] = "cups-Ink";
constexpr char kCUPSSharpARCMode[] = "cups-ARCMode"; constexpr char kCUPSSharpARCMode[] = "cups-ARCMode";
constexpr char kCUPSXeroxXRXColor[] = "cups-XRXColor"; constexpr char kCUPSXeroxXRXColor[] = "cups-XRXColor";
#endif // defined(OS_MACOSX) #endif // defined(OS_MACOSX)
...@@ -156,12 +156,12 @@ void GetColorModelForMode(int color_mode, ...@@ -156,12 +156,12 @@ void GetColorModelForMode(int color_mode,
*color_value = kBlack; *color_value = kBlack;
break; break;
case EPSON_INK_COLOR: case EPSON_INK_COLOR:
*color_setting_name = kCUPSInk; *color_setting_name = kCUPSEpsonInk;
*color_value = kColor; *color_value = kEpsonColor;
break; break;
case EPSON_INK_MONO: case EPSON_INK_MONO:
*color_setting_name = kCUPSInk; *color_setting_name = kCUPSEpsonInk;
*color_value = kMono; *color_value = kEpsonMono;
break; break;
case SHARP_ARCMODE_CMCOLOR: case SHARP_ARCMODE_CMCOLOR:
*color_setting_name = kCUPSSharpARCMode; *color_setting_name = kCUPSSharpARCMode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment