// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Next MinVersion: 2 module arc.mojom; // android.print.PageRange struct PrintPageRange { // First page inclusive. int32 start; // Last page inclusive. int32 end; }; // android.print.PrintAttributes.MediaSize struct PrintMediaSize { // Id unique among media sizes. string id; // Localized label. string label; int32 width_mils; int32 height_mils; }; // android.print.PrintAttributes.Resolution struct PrintResolution { // Id unique among resolutions. string id; // Localized label. string label; int32 horizontal_dpi; int32 vertical_dpi; }; // android.print.PrintAttributes.Margins struct PrintMargins { int32 left_mils; int32 top_mils; int32 right_mils; int32 bottom_mils; }; // android.print.PrintAttributes.COLOR_MODE_* [Extensible] enum PrintColorMode { MONOCHROME = 1, COLOR = 2, }; // android.print.PrintAttributes.DUPLEX_MODE_* [Extensible] enum PrintDuplexMode { NONE = 1, LONG_EDGE = 2, SHORT_EDGE = 4, }; // android.print.PrintDocumentInfo.CONTENT_TYPE_* [Extensible] enum PrintContentType { UNKNOWN = -1, DOCUMENT = 0, PHOTO = 1, }; // android.print.PrintAttributes struct PrintAttributes { PrintMediaSize? media_size; PrintResolution? resolution; PrintMargins? min_margins; PrintColorMode color_mode; PrintDuplexMode duplex_mode; }; struct PrintJobRequest { // android.printservice.PrintJob fields: array id; string label; string? printer_id; int64 creation_time; int32 copies; array pages; PrintAttributes attributes; // android.print.PrintDocumentInfo fields: string document_name; int32 document_page_count; PrintContentType content_type; int64 data_size; // android.printservice.PrintDocument fields: handle? data; }; // android.print.PrinterInfo.STATUS_* [Extensible] enum PrinterStatus { IDLE = 1, BUSY = 2, UNAVAILABLE = 3, }; // android.print.PrinterCapabilitiesInfo struct PrinterCapabilities { array media_sizes; array resolutions; PrintMargins min_margins; PrintColorMode color_modes; PrintDuplexMode duplex_modes; PrintAttributes defaults; }; // android.print.PrinterInfo struct PrinterInfo { // Id unique among printers. string id; // Localized name. string name; PrinterStatus status; // Localized description. string? description; // Intent for provider-specific settings. string? info_intent; PrinterCapabilities? capabilities; }; // android.printservice.PrinterDiscoverySession implementation. // This is called by container when printing is requested and printer discovery // has to start. Implemented in embedder. // The normal order this is called is: // StartPrinterDiscovery // StartPrinterStateTracking // StopPrinterStateTracking // StopPrinterDiscovery // DestroyDiscoverySession // (ValidatePrinters is not used in practice) // // Next method ID: 6 interface PrinterDiscoverySessionHost { StartPrinterDiscovery@0(array printer_ids); StopPrinterDiscovery@1(); ValidatePrinters@2(array printer_ids); StartPrinterStateTracking@3(string printer_id); StopPrinterStateTracking@4(string printer_id); DestroyDiscoverySession@5(); }; // android.printservice.PrinterDiscoverySession final methods proxy. // This is called by embedder when printer discovery is active. // Implemented in container. // Next method ID: 2 interface PrinterDiscoverySessionInstance { AddPrinters@0(array printers); RemovePrinters@1(array printers); }; // android.printservice.PrintService.onRequestCancelPrintJob implementation. // This is called by container when job cancellation was requested. // Implemented in embedder. // Next method ID: 1 interface PrintJobHost { Cancel@0(); }; // android.printservice.PrintJob proxy. // This is called by embedder when print job status changes. // Implemented in container. // See https://developer.android.com/reference/android/printservice/PrintJob.html // Next method ID: 7 interface PrintJobInstance { Start@0(); Block@1(string? reason); Complete@2(); Fail@3(string? reason); Cancel@4(); SetProgress@5(float progress); SetStatus@6(string? status); }; // android.printservice.PrintService implementation. // This is called by container to create new discovery sessions and print jobs. // Implemented in embedder. // Next method ID: 2 // Deprecated method ID: 0 interface PrintHost { PrintDeprecated@0(handle file); [MinVersion=1] Print@1(PrintJobInstance instance, PrintJobRequest request) => (PrintJobHost host); [MinVersion=1] CreateDiscoverySession@2(PrinterDiscoverySessionInstance instance) => (PrinterDiscoverySessionHost host); }; // This is called by embedder to indicate that it's ready to accept print jobs. // Implemented in container. // Next method ID: 2 // Deprecated method ID: 0 interface PrintInstance { // DEPRECATED: Please use Init@1 instead. InitDeprecated@0(PrintHost host_ptr); // Establishes full-duplex communication with the host. [MinVersion=1] Init@1(PrintHost host_ptr) => (); };