#ifndef PRINTING_BACKEND_PRINT_BACKEND_TEST_CONSTANTS_H_
#define PRINTING_BACKEND_PRINT_BACKEND_TEST_CONSTANTS_H_
#include <stdint.h>
#include <array>
#include <optional>
#include <vector>
#include "build/build_config.h"
#include "printing/backend/mojom/print_backend.mojom-forward.h"
#include "printing/backend/print_backend.h"
#include "ui/gfx/geometry/size.h"
namespace printing {
struct OptionalSampleCapabilities {
OptionalSampleCapabilities();
OptionalSampleCapabilities(const OptionalSampleCapabilities&) = delete;
OptionalSampleCapabilities& operator=(const OptionalSampleCapabilities&) =
delete;
OptionalSampleCapabilities(OptionalSampleCapabilities&& other) noexcept;
OptionalSampleCapabilities& operator=(
OptionalSampleCapabilities&& other) noexcept;
~OptionalSampleCapabilities();
#if BUILDFLAG(IS_CHROMEOS)
bool pin_supported = false;
AdvancedCapabilities advanced_capabilities;
std::vector<mojom::PrintScalingType> print_scaling_types;
mojom::PrintScalingType print_scaling_type_default =
mojom::PrintScalingType::kUnknownPrintScalingType;
#endif
#if BUILDFLAG(IS_WIN)
std::optional<PageOutputQuality> page_output_quality;
#endif
};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperA3{
"A3", "67",
gfx::Size(7016, 9921),
gfx::Rect(0, 0, 7016, 9921)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperA4{
"A4",
"12",
gfx::Size(4961, 7016),
gfx::Rect(100, 200, 500, 800),
0,
true
#if BUILDFLAG(IS_CHROMEOS)
,
PaperMargins(100, 100, 200, 200)
#endif
};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperLetter{
"Letter", "45",
gfx::Size(5100, 6600),
gfx::Rect(0, 0, 5100, 6600)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperLedger{
"Ledger", "89",
gfx::Size(6600, 10200),
gfx::Rect(0, 0, 6600, 10200)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperCustom{
"Custom",
"",
gfx::Size(2540, 5080),
gfx::Rect(0, 0, 2540, 5080),
20000};
inline const PrinterSemanticCapsAndDefaults::MediaType kMediaTypePlain{
"Plain Paper",
"stationery",
};
inline const PrinterSemanticCapsAndDefaults::MediaType kMediaTypePhoto{
"Photo Paper",
"photographic",
};
#if BUILDFLAG(IS_CHROMEOS)
inline const AdvancedCapability kAdvancedCapability1(
"advanced_cap_bool",
"Advanced Capability #1 (bool)",
AdvancedCapability::Type::kBoolean,
"true",
{});
inline const AdvancedCapability kAdvancedCapability2(
"advanced_cap_double",
"Advanced Capability #2 (double)",
AdvancedCapability::Type::kFloat,
"3.14159",
{
AdvancedCapabilityValue(
"adv_cap_val_1",
"Advanced Capability #1"),
AdvancedCapabilityValue(
"adv_cap_val_2",
"Advanced Capability #2"),
AdvancedCapabilityValue(
"adv_cap_val_3",
"Advanced Capability #3"),
});
inline const AdvancedCapabilities kAdvancedCapabilities{kAdvancedCapability1,
kAdvancedCapability2};
#endif
#if BUILDFLAG(IS_WIN)
inline const PageOutputQualityAttribute kPageOutputQualityAttribute1(
"Normal",
"ns000:Normal");
inline const PageOutputQualityAttribute kPageOutputQualityAttribute2(
"Draft",
"ns000:Draft");
inline const PageOutputQualityAttribute kPageOutputQualityAttribute3(
"Advance",
"ns000:Advance");
inline const PageOutputQualityAttributes kPageOutputQualityAttributes{
kPageOutputQualityAttribute1, kPageOutputQualityAttribute2,
kPageOutputQualityAttribute3};
inline const PageOutputQuality kPageOutputQuality(
kPageOutputQualityAttributes,
std::nullopt);
inline constexpr char kDefaultQuality[] = "ns000:Draft";
#endif
inline constexpr bool kCollateCapable = true;
inline constexpr bool kCollateDefault = true;
inline constexpr int32_t kCopiesMax = 123;
inline const std::vector<mojom::DuplexMode> kDuplexModes{
mojom::DuplexMode::kSimplex, mojom::DuplexMode::kLongEdge,
mojom::DuplexMode::kShortEdge};
inline constexpr mojom::DuplexMode kDuplexDefault = mojom::DuplexMode::kSimplex;
inline constexpr bool kColorChangeable = true;
inline constexpr bool kColorDefault = true;
inline constexpr mojom::ColorModel kColorModel = mojom::ColorModel::kRGB;
inline constexpr mojom::ColorModel kBwModel = mojom::ColorModel::kGrayscale;
inline const PrinterSemanticCapsAndDefaults::Papers kPapers{kPaperA4,
kPaperLetter};
inline const PrinterSemanticCapsAndDefaults::Papers kUserDefinedPapers{
kPaperA3, kPaperLedger, kPaperCustom};
inline const PrinterSemanticCapsAndDefaults::Paper kDefaultPaper = kPaperLetter;
inline constexpr gfx::Size kDpi600(600, 600);
inline constexpr gfx::Size kDpi1200(1200, 1200);
inline constexpr gfx::Size kDpi1200x600(1200, 600);
inline const std::vector<gfx::Size> kDpis{kDpi600, kDpi1200, kDpi1200x600};
inline constexpr gfx::Size kDefaultDpi = kDpi600;
inline const PrinterSemanticCapsAndDefaults::MediaTypes kMediaTypes{
kMediaTypePlain, kMediaTypePhoto};
inline const PrinterSemanticCapsAndDefaults::MediaType kDefaultMediaType =
kMediaTypePlain;
#if BUILDFLAG(IS_CHROMEOS)
inline constexpr bool kPinSupported = true;
inline constexpr std::array<mojom::PrintScalingType, 6> kPrintScalingTypes{
mojom::PrintScalingType::kAuto,
mojom::PrintScalingType::kAutoFit,
mojom::PrintScalingType::kFill,
mojom::PrintScalingType::kFit,
mojom::PrintScalingType::kNone,
mojom::PrintScalingType::kUnknownPrintScalingType};
inline constexpr mojom::PrintScalingType kPrintScalingTypeDefault =
mojom::PrintScalingType::kFit;
#endif
#if BUILDFLAG(IS_CHROMEOS)
OptionalSampleCapabilities SampleWithScaleAndPinAndAdvancedCapabilities();
#endif
#if BUILDFLAG(IS_WIN)
OptionalSampleCapabilities SampleWithPageOutputQuality();
#endif
PrinterSemanticCapsAndDefaults GenerateSamplePrinterSemanticCapsAndDefaults(
OptionalSampleCapabilities sample_capabilities);
}
#endif