[go: nahoru, domu]

blob: 2152b4863de99d9fa251934d40e38e17ec34e7e8 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PRINTING_BACKEND_PRINT_BACKEND_TEST_CONSTANTS_H_
#define PRINTING_BACKEND_PRINT_BACKEND_TEST_CONSTANTS_H_
#include <stdint.h>
#include <vector>
#include "build/build_config.h"
#include "printing/backend/mojom/print_backend.mojom-forward.h"
#include "printing/backend/print_backend.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/geometry/size.h"
namespace printing {
// Sample capabilities used to set optional fields in
// GenerateSamplePrinterSemanticCapsAndDefaults().
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;
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_WIN)
absl::optional<PageOutputQuality> page_output_quality;
#endif // BUILDFLAG(IS_WIN)
};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperA3{
/*display_name=*/"A3", /*vendor_id=*/"67",
/*size_um=*/gfx::Size(7016, 9921),
/*printable_area_um=*/gfx::Rect(0, 0, 7016, 9921)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperA4{
/*display_name=*/"A4",
/*vendor_id=*/"12",
/*size_um=*/gfx::Size(4961, 7016),
/*printable_area_um=*/gfx::Rect(100, 200, 500, 800),
/*max_height_um=*/0,
/*has_borderless_variant=*/true};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperLetter{
/*display_name=*/"Letter", /*vendor_id=*/"45",
/*size_um=*/gfx::Size(5100, 6600),
/*printable_area_um=*/gfx::Rect(0, 0, 5100, 6600)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperLedger{
/*display_name=*/"Ledger", /*vendor_id=*/"89",
/*size_um=*/gfx::Size(6600, 10200),
/*printable_area_um=*/gfx::Rect(0, 0, 6600, 10200)};
inline const PrinterSemanticCapsAndDefaults::Paper kPaperCustom{
/*display_name=*/"Custom",
/*vendor_id=*/"",
/*size_um=*/gfx::Size(2540, 5080),
/*printable_area_um=*/gfx::Rect(0, 0, 2540, 5080),
/*max_height_um=*/20000};
inline const PrinterSemanticCapsAndDefaults::MediaType kMediaTypePlain{
/*display_name=*/"Plain Paper",
/*vendor_id=*/"stationery",
};
inline const PrinterSemanticCapsAndDefaults::MediaType kMediaTypePhoto{
/*display_name=*/"Photo Paper",
/*vendor_id=*/"photographic",
};
#if BUILDFLAG(IS_CHROMEOS)
inline const AdvancedCapability kAdvancedCapability1(
/*name=*/"advanced_cap_bool",
/*display_name=*/"Advanced Capability #1 (bool)",
/*type=*/AdvancedCapability::Type::kBoolean,
/*default_value=*/"true",
/*values=*/{});
inline const AdvancedCapability kAdvancedCapability2(
/*name=*/"advanced_cap_double",
/*display_name=*/"Advanced Capability #2 (double)",
/*type=*/AdvancedCapability::Type::kFloat,
/*default_value=*/"3.14159",
/*values=*/
{
AdvancedCapabilityValue(
/*name=*/"adv_cap_val_1",
/*display_name=*/"Advanced Capability #1"),
AdvancedCapabilityValue(
/*name=*/"adv_cap_val_2",
/*display_name=*/"Advanced Capability #2"),
AdvancedCapabilityValue(
/*name=*/"adv_cap_val_3",
/*display_name=*/"Advanced Capability #3"),
});
inline const AdvancedCapabilities kAdvancedCapabilities{kAdvancedCapability1,
kAdvancedCapability2};
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_WIN)
inline const PageOutputQualityAttribute kPageOutputQualityAttribute1(
/*display_name=*/"Normal",
/*name=*/"ns000:Normal");
inline const PageOutputQualityAttribute kPageOutputQualityAttribute2(
/*display_name=*/"Draft",
/*name=*/"ns000:Draft");
inline const PageOutputQualityAttribute kPageOutputQualityAttribute3(
/*display_name=*/"Advance",
/*name=*/"ns000:Advance");
inline const PageOutputQualityAttributes kPageOutputQualityAttributes{
kPageOutputQualityAttribute1, kPageOutputQualityAttribute2,
kPageOutputQualityAttribute3};
inline const PageOutputQuality kPageOutputQuality(
kPageOutputQualityAttributes,
/*default_quality=*/absl::nullopt);
inline constexpr char kDefaultQuality[] = "ns000:Draft";
#endif // BUILDFLAG(IS_WIN)
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;
#endif
#if BUILDFLAG(IS_CHROMEOS)
OptionalSampleCapabilities SampleWithPinAndAdvancedCapabilities();
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_WIN)
OptionalSampleCapabilities SampleWithPageOutputQuality();
#endif // BUILDFLAG(IS_WIN)
PrinterSemanticCapsAndDefaults GenerateSamplePrinterSemanticCapsAndDefaults(
OptionalSampleCapabilities sample_capabilities);
} // namespace printing
#endif // PRINTING_BACKEND_PRINT_BACKEND_TEST_CONSTANTS_H_