// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module printing.mojom;
import "printing/mojom/print.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
// Basic information for a specific printer.
// Corresponds to `printing::PrinterBasicInfo` in
// printing/backend/print_backend.h.
struct PrinterBasicInfo {
string printer_name;
string display_name;
string printer_description;
int32 printer_status;
bool is_default;
map<string, string> options;
};
// Paper used by printer semantic capabilities and defaults.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults::Paper` in
// printing/backend/print_backend.h.
// For backwards compatibility, `printable_area_um` must be optional.
[Stable]
struct Paper {
string display_name;
string vendor_id;
gfx.mojom.Size size_um;
[MinVersion=1] gfx.mojom.Rect? printable_area_um;
[MinVersion=2] int32 max_height_um;
[MinVersion=3] bool has_borderless_variant;
};
// Media type used by printer semantic capabilities and defaults.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults::MediaType` in
// printing/backend/print_backend.h.
[Stable]
struct MediaType {
string display_name;
string vendor_id;
};
// An advanced capability value for ChromeOS printing.
// Paper used by printer semantic capabilities and defaults.
// Corresponds to `printing::AdvancedCapabilityValue` in
// printing/backend/print_backend.h.
[Stable, EnableIf=is_chromeos]
struct AdvancedCapabilityValue {
string name;
string display_name;
};
// The type of the values for advanced capabilities.
// Corresponds to `printing::AdvancedCapability::Type` in
// printing/backend/print_backend.h.
[Stable, Extensible, EnableIf=is_chromeos]
enum AdvancedCapabilityType {
[Default] kString,
kBoolean,
kFloat,
kInteger,
};
// An advanced capability for ChromeOS printing.
// Corresponds to `printing::AdvancedCapability` in
// printing/backend/print_backend.h.
[Stable, EnableIf=is_chromeos]
struct AdvancedCapability {
string name;
string display_name;
AdvancedCapabilityType type;
string default_value;
array<AdvancedCapabilityValue> values;
};
// Attributes of a Page Output Quality of XPS printer for Windows printing.
// Corresponds to `printing::PageOutpuQualityAttribute` in
// printing/backend/print_backend.h.
[Stable, EnableIf=is_win]
struct PageOutputQualityAttribute {
string display_name;
string name;
};
// Page Output Quality from XPS printer for Windows printing. Corresponds to
// `printing::PageOutputQuality` in printing/backend/print_backend.h.
[Stable, EnableIf=is_win]
struct PageOutputQuality {
array<PageOutputQualityAttribute> qualities; // No duplicates.
string? default_quality; // Default selection of `qualities`.
// Null if no default.
};
// The semantic capabilities and defaults used for a printer.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults` in
// printing/backend/print_backend.h.
[Stable]
struct PrinterSemanticCapsAndDefaults {
bool collate_capable = false;
bool collate_default = false;
int32 copies_max = 1; // Valid values are only >= 1.
array<DuplexMode> duplex_modes;
DuplexMode duplex_default = kUnknownDuplexMode;
bool color_changeable = false;
bool color_default = false;
ColorModel color_model = kUnknownColorModel;
ColorModel bw_model = kUnknownColorModel;
array<Paper> papers; // Empty and duplicates allowed.
array<Paper> user_defined_papers;
Paper default_paper;
array<gfx.mojom.Size> dpis; // Duplicates allowed.
gfx.mojom.Size default_dpi;
[EnableIf=is_chromeos]
bool pin_supported = false;
[EnableIf=is_chromeos]
array<AdvancedCapability> advanced_capabilities;
// Null if feature flag `kReadPrinterCapabilitiesWithXps` is disabled.
// Null if printer doesn't have this capability.
[EnableIf=is_win, MinVersion=1]
PageOutputQuality? page_output_quality;
[MinVersion=2]
array<MediaType>? media_types; // Allowed to be empty.
[MinVersion=2]
MediaType? default_media_type;
};