Reduce casting for printing ColorModel APIs
Cleanup born from move of printing::ColorModel enum into mojom in r799398. Reduce the number of static_cast<int> in the code by updating the API to accept printing::mojom::ColorModel in as many places as possible. Bug: 809738 Change-Id: Ib1d0024a94e21b9bf982174d99e85b04616f1009 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2368082 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Alan Screen <awscreen@chromium.org> Cr-Commit-Position: refs/heads/master@{#802847}
This commit is contained in:
chrome/browser
chromeos
arc
print_spooler
extensions
printing
printing
ui
webui
print_preview
printing
backend
print_settings.ccprint_settings.hprint_settings_unittest.ccprinting_context_chromeos.ccprinting_context_mac.mmui/gtk/printing
@ -47,7 +47,8 @@ constexpr int kMinimumPdfSize = 50;
|
||||
|
||||
// Converts a color mode to its Mojo type.
|
||||
mojom::PrintColorMode ToArcColorMode(int color_mode) {
|
||||
base::Optional<bool> is_color = printing::IsColorModelSelected(color_mode);
|
||||
base::Optional<bool> is_color = printing::IsColorModelSelected(
|
||||
printing::ColorModeToColorModel(color_mode));
|
||||
return is_color.value() ? mojom::PrintColorMode::COLOR
|
||||
: mojom::PrintColorMode::MONOCHROME;
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ bool CheckSettingsAndCapabilitiesCompatibility(
|
||||
return false;
|
||||
|
||||
base::Optional<bool> is_color =
|
||||
::printing::IsColorModelSelected(static_cast<int>(settings.color()));
|
||||
::printing::IsColorModelSelected(settings.color());
|
||||
bool color_mode_selected = is_color.has_value() && is_color.value();
|
||||
if (!color_mode_selected &&
|
||||
capabilities.bw_model ==
|
||||
|
@ -18,8 +18,7 @@ namespace {
|
||||
|
||||
proto::PrintSettings_ColorMode ColorModelToProto(
|
||||
::printing::mojom::ColorModel color) {
|
||||
base::Optional<bool> is_color =
|
||||
::printing::IsColorModelSelected(static_cast<int>(color));
|
||||
base::Optional<bool> is_color = ::printing::IsColorModelSelected(color);
|
||||
return is_color.value() ? proto::PrintSettings_ColorMode_COLOR
|
||||
: proto::PrintSettings_ColorMode_BLACK_AND_WHITE;
|
||||
}
|
||||
|
@ -104,12 +104,12 @@ void ReportPrintSettingsStats(const base::Value& print_settings,
|
||||
|
||||
base::Optional<int> color_mode_opt = print_settings.FindIntKey(kSettingColor);
|
||||
if (color_mode_opt.has_value()) {
|
||||
mojom::ColorModel color_model =
|
||||
ColorModeToColorModel(color_mode_opt.value());
|
||||
bool unknown_color_model =
|
||||
color_mode_opt.value() ==
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel);
|
||||
color_model == mojom::ColorModel::kUnknownColorModel;
|
||||
if (!unknown_color_model) {
|
||||
base::Optional<bool> is_color =
|
||||
IsColorModelSelected(color_mode_opt.value());
|
||||
base::Optional<bool> is_color = IsColorModelSelected(color_model);
|
||||
ReportPrintSettingHistogram(is_color.value()
|
||||
? PrintSettingsBuckets::kColor
|
||||
: PrintSettingsBuckets::kBlackAndWhite);
|
||||
|
@ -25,11 +25,10 @@ bool PapersEqual(const PrinterSemanticCapsAndDefaults::Paper& lhs,
|
||||
}
|
||||
|
||||
void VerifyCapabilityColorModels(const PrinterSemanticCapsAndDefaults& caps) {
|
||||
base::Optional<bool> maybe_color =
|
||||
IsColorModelSelected(static_cast<int>(caps.color_model));
|
||||
base::Optional<bool> maybe_color = IsColorModelSelected(caps.color_model);
|
||||
ASSERT_TRUE(maybe_color.has_value());
|
||||
EXPECT_TRUE(maybe_color.value());
|
||||
maybe_color = IsColorModelSelected(static_cast<int>(caps.bw_model));
|
||||
maybe_color = IsColorModelSelected(caps.bw_model);
|
||||
ASSERT_TRUE(maybe_color.has_value());
|
||||
EXPECT_FALSE(maybe_color.value());
|
||||
}
|
||||
|
@ -19,13 +19,6 @@ namespace {
|
||||
|
||||
base::LazyInstance<std::string>::Leaky g_user_agent;
|
||||
|
||||
base::Optional<mojom::ColorModel> ColorModeToColorModel(int color_mode) {
|
||||
if (color_mode < static_cast<int>(mojom::ColorModel::kUnknownColorModel) ||
|
||||
color_mode > static_cast<int>(mojom::ColorModel::kColorModelLast))
|
||||
return base::nullopt;
|
||||
return static_cast<mojom::ColorModel>(color_mode);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void SetAgent(const std::string& user_agent) {
|
||||
@ -36,10 +29,17 @@ const std::string& GetAgent() {
|
||||
return g_user_agent.Get();
|
||||
}
|
||||
|
||||
mojom::ColorModel ColorModeToColorModel(int color_mode) {
|
||||
if (color_mode < static_cast<int>(mojom::ColorModel::kUnknownColorModel) ||
|
||||
color_mode > static_cast<int>(mojom::ColorModel::kColorModelLast))
|
||||
return mojom::ColorModel::kUnknownColorModel;
|
||||
return static_cast<mojom::ColorModel>(color_mode);
|
||||
}
|
||||
|
||||
#if defined(USE_CUPS)
|
||||
void GetColorModelForMode(int color_mode,
|
||||
std::string* color_setting_name,
|
||||
std::string* color_value) {
|
||||
void GetColorModelForModel(mojom::ColorModel color_model,
|
||||
std::string* color_setting_name,
|
||||
std::string* color_value) {
|
||||
#if defined(OS_MAC)
|
||||
constexpr char kCUPSColorMode[] = "ColorMode";
|
||||
constexpr char kCUPSColorModel[] = "ColorModel";
|
||||
@ -64,14 +64,7 @@ void GetColorModelForMode(int color_mode,
|
||||
|
||||
*color_setting_name = kCUPSColorModel;
|
||||
|
||||
base::Optional<mojom::ColorModel> color_model =
|
||||
ColorModeToColorModel(color_mode);
|
||||
if (!color_model.has_value()) {
|
||||
NOTREACHED();
|
||||
return;
|
||||
}
|
||||
|
||||
switch (color_model.value()) {
|
||||
switch (color_model) {
|
||||
case mojom::ColorModel::kUnknownColorModel:
|
||||
*color_value = kGrayscale;
|
||||
break;
|
||||
@ -190,12 +183,12 @@ void GetColorModelForMode(int color_mode,
|
||||
}
|
||||
|
||||
#if defined(OS_MAC) || defined(OS_CHROMEOS)
|
||||
std::string GetIppColorModelForMode(int color_mode) {
|
||||
// Accept |UNKNOWN_COLOR_MODEL| for consistency with GetColorModelForMode().
|
||||
if (color_mode == static_cast<int>(mojom::ColorModel::kUnknownColorModel))
|
||||
std::string GetIppColorModelForModel(mojom::ColorModel color_model) {
|
||||
// Accept |kUnknownColorModel| for consistency with GetColorModelForModel().
|
||||
if (color_model == mojom::ColorModel::kUnknownColorModel)
|
||||
return CUPS_PRINT_COLOR_MODE_MONOCHROME;
|
||||
|
||||
base::Optional<bool> is_color = IsColorModelSelected(color_mode);
|
||||
base::Optional<bool> is_color = IsColorModelSelected(color_model);
|
||||
if (!is_color.has_value()) {
|
||||
NOTREACHED();
|
||||
return std::string();
|
||||
@ -207,15 +200,8 @@ std::string GetIppColorModelForMode(int color_mode) {
|
||||
#endif // defined(OS_MAC) || defined(OS_CHROMEOS)
|
||||
#endif // defined(USE_CUPS)
|
||||
|
||||
base::Optional<bool> IsColorModelSelected(int color_mode) {
|
||||
base::Optional<mojom::ColorModel> color_model =
|
||||
ColorModeToColorModel(color_mode);
|
||||
if (!color_model.has_value()) {
|
||||
NOTREACHED();
|
||||
return base::nullopt;
|
||||
}
|
||||
|
||||
switch (color_model.value()) {
|
||||
base::Optional<bool> IsColorModelSelected(mojom::ColorModel color_model) {
|
||||
switch (color_model) {
|
||||
case mojom::ColorModel::kColor:
|
||||
case mojom::ColorModel::kCMYK:
|
||||
case mojom::ColorModel::kCMY:
|
||||
|
@ -27,19 +27,26 @@
|
||||
|
||||
namespace printing {
|
||||
|
||||
// Returns true if |color_mode| is color and not B&W. Must be called with a
|
||||
// |color_mode| from printing::ColorModel, excluding UNKNOWN_COLOR_MODEL.
|
||||
PRINTING_EXPORT base::Optional<bool> IsColorModelSelected(int color_mode);
|
||||
// Convert from |color_mode| into a |color_model|. An invalid |color_mode|
|
||||
// will give a result of |mojom::ColorModel::kUnknownColorModel|.
|
||||
PRINTING_EXPORT mojom::ColorModel ColorModeToColorModel(int color_mode);
|
||||
|
||||
// Returns true if |color_model| is color and false if it is B&W. Callers
|
||||
// are not supposed to pass in |mojom::ColorModel::kUnknownColorModel|, but
|
||||
// if they do then the result will be base::nullopt.
|
||||
PRINTING_EXPORT base::Optional<bool> IsColorModelSelected(
|
||||
mojom::ColorModel color_model);
|
||||
|
||||
#if defined(USE_CUPS)
|
||||
// Get the color model setting name and value for the |color_mode|.
|
||||
PRINTING_EXPORT void GetColorModelForMode(int color_mode,
|
||||
std::string* color_setting_name,
|
||||
std::string* color_value);
|
||||
// Get the color model setting name and value for the |color_model|.
|
||||
PRINTING_EXPORT void GetColorModelForModel(mojom::ColorModel color_model,
|
||||
std::string* color_setting_name,
|
||||
std::string* color_value);
|
||||
|
||||
#if defined(OS_MAC) || defined(OS_CHROMEOS)
|
||||
// Convert from |color_mode| to a print-color-mode value from PWG 5100.13.
|
||||
PRINTING_EXPORT std::string GetIppColorModelForMode(int color_mode);
|
||||
// Convert from |color_model| to a print-color-mode value from PWG 5100.13.
|
||||
PRINTING_EXPORT std::string GetIppColorModelForModel(
|
||||
mojom::ColorModel color_model);
|
||||
#endif
|
||||
#endif // defined(USE_CUPS)
|
||||
|
||||
|
@ -11,29 +11,43 @@
|
||||
|
||||
namespace printing {
|
||||
|
||||
TEST(PrintSettingsTest, ColorModeToColorModel) {
|
||||
for (int mode = static_cast<int>(mojom::ColorModel::kUnknownColorModel);
|
||||
mode <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++mode) {
|
||||
EXPECT_EQ(ColorModeToColorModel(mode),
|
||||
static_cast<mojom::ColorModel>(mode));
|
||||
}
|
||||
|
||||
// Check edge cases.
|
||||
EXPECT_EQ(ColorModeToColorModel(
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel) - 1),
|
||||
mojom::ColorModel::kUnknownColorModel);
|
||||
EXPECT_EQ(ColorModeToColorModel(
|
||||
static_cast<int>(mojom::ColorModel::kColorModelLast) + 1),
|
||||
mojom::ColorModel::kUnknownColorModel);
|
||||
}
|
||||
|
||||
TEST(PrintSettingsTest, IsColorModelSelected) {
|
||||
for (int model = static_cast<int>(mojom::ColorModel::kUnknownColorModel) + 1;
|
||||
model <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++model)
|
||||
EXPECT_TRUE(IsColorModelSelected(IsColorModelSelected(model).has_value()));
|
||||
model <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++model) {
|
||||
EXPECT_TRUE(IsColorModelSelected(static_cast<mojom::ColorModel>(model))
|
||||
.has_value());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(PrintSettingsDeathTest, IsColorModelSelectedEdges) {
|
||||
::testing::FLAGS_gtest_death_test_style = "threadsafe";
|
||||
EXPECT_DCHECK_DEATH(IsColorModelSelected(
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel)));
|
||||
EXPECT_DCHECK_DEATH(IsColorModelSelected(
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel) - 1));
|
||||
EXPECT_DCHECK_DEATH(IsColorModelSelected(
|
||||
static_cast<int>(mojom::ColorModel::kColorModelLast) + 1));
|
||||
EXPECT_DCHECK_DEATH(
|
||||
IsColorModelSelected(mojom::ColorModel::kUnknownColorModel));
|
||||
}
|
||||
|
||||
#if defined(USE_CUPS)
|
||||
TEST(PrintSettingsTest, GetColorModelForMode) {
|
||||
TEST(PrintSettingsTest, GetColorModelForModel) {
|
||||
std::string color_setting_name;
|
||||
std::string color_value;
|
||||
for (int model = static_cast<int>(mojom::ColorModel::kUnknownColorModel);
|
||||
model <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++model) {
|
||||
GetColorModelForMode(model, &color_setting_name, &color_value);
|
||||
GetColorModelForModel(static_cast<mojom::ColorModel>(model),
|
||||
&color_setting_name, &color_value);
|
||||
EXPECT_FALSE(color_setting_name.empty());
|
||||
EXPECT_FALSE(color_value.empty());
|
||||
color_setting_name.clear();
|
||||
@ -41,31 +55,13 @@ TEST(PrintSettingsTest, GetColorModelForMode) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(PrintSettingsDeathTest, GetColorModelForModeEdges) {
|
||||
::testing::FLAGS_gtest_death_test_style = "threadsafe";
|
||||
std::string color_setting_name;
|
||||
std::string color_value;
|
||||
EXPECT_DCHECK_DEATH(GetColorModelForMode(
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel) - 1,
|
||||
&color_setting_name, &color_value));
|
||||
EXPECT_DCHECK_DEATH(GetColorModelForMode(
|
||||
static_cast<int>(mojom::ColorModel::kColorModelLast) + 1,
|
||||
&color_setting_name, &color_value));
|
||||
}
|
||||
|
||||
#if defined(OS_MAC) || defined(OS_CHROMEOS)
|
||||
TEST(PrintSettingsTest, GetIppColorModelForMode) {
|
||||
TEST(PrintSettingsTest, GetIppColorModelForModel) {
|
||||
for (int model = static_cast<int>(mojom::ColorModel::kUnknownColorModel);
|
||||
model <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++model)
|
||||
EXPECT_FALSE(GetIppColorModelForMode(model).empty());
|
||||
}
|
||||
|
||||
TEST(PrintSettingsDeathTest, GetIppColorModelForModeEdges) {
|
||||
::testing::FLAGS_gtest_death_test_style = "threadsafe";
|
||||
EXPECT_DCHECK_DEATH(GetIppColorModelForMode(
|
||||
static_cast<int>(mojom::ColorModel::kUnknownColorModel) - 1));
|
||||
EXPECT_DCHECK_DEATH(GetIppColorModelForMode(
|
||||
static_cast<int>(mojom::ColorModel::kColorModelLast) + 1));
|
||||
model <= static_cast<int>(mojom::ColorModel::kColorModelLast); ++model) {
|
||||
EXPECT_FALSE(GetIppColorModelForModel(static_cast<mojom::ColorModel>(model))
|
||||
.empty());
|
||||
}
|
||||
}
|
||||
#endif // defined(OS_MAC) || defined(OS_CHROMEOS)
|
||||
#endif // defined(USE_CUPS)
|
||||
|
@ -122,9 +122,9 @@ std::vector<ScopedCupsOption> SettingsToCupsOptions(
|
||||
}
|
||||
|
||||
std::vector<ScopedCupsOption> options;
|
||||
options.push_back(ConstructOption(
|
||||
kIppColor,
|
||||
GetIppColorModelForMode(static_cast<int>(settings.color())))); // color
|
||||
options.push_back(
|
||||
ConstructOption(kIppColor,
|
||||
GetIppColorModelForModel(settings.color()))); // color
|
||||
options.push_back(ConstructOption(kIppDuplex, sides)); // duplexing
|
||||
options.push_back(
|
||||
ConstructOption(kIppMedia,
|
||||
|
@ -391,11 +391,12 @@ bool PrintingContextMac::SetOutputColor(int color_mode) {
|
||||
static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]);
|
||||
std::string color_setting_name;
|
||||
std::string color_value;
|
||||
mojom::ColorModel color_model = ColorModeToColorModel(color_mode);
|
||||
if (base::FeatureList::IsEnabled(features::kCupsIppPrintingBackend)) {
|
||||
color_setting_name = CUPS_PRINT_COLOR_MODE;
|
||||
color_value = GetIppColorModelForMode(color_mode);
|
||||
color_value = GetIppColorModelForModel(color_model);
|
||||
} else {
|
||||
GetColorModelForMode(color_mode, &color_setting_name, &color_value);
|
||||
GetColorModelForModel(color_model, &color_setting_name, &color_value);
|
||||
}
|
||||
base::ScopedCFTypeRef<CFStringRef> color_setting(
|
||||
base::SysUTF8ToCFStringRef(color_setting_name));
|
||||
|
@ -290,8 +290,8 @@ void PrintDialogGtk::UpdateSettings(
|
||||
|
||||
std::string color_value;
|
||||
std::string color_setting_name;
|
||||
printing::GetColorModelForMode(static_cast<int>(settings->color()),
|
||||
&color_setting_name, &color_value);
|
||||
printing::GetColorModelForModel(settings->color(), &color_setting_name,
|
||||
&color_value);
|
||||
gtk_print_settings_set(gtk_settings_, color_setting_name.c_str(),
|
||||
color_value.c_str());
|
||||
|
||||
|
Reference in New Issue
Block a user