// Copyright 2014 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. // The chrome.printerProvider API exposes events used by print // manager to query printers controlled by extensions, to query their // capabilities and to submit print jobs to these printers. namespace printerProvider { // Error codes returned in response to $(ref:onPrintRequested) event. enum PrintError { // Operation completed successfully. OK, // General failure. FAILED, // Print ticket is invalid. For example, ticket is inconsistent with // capabilities or extension is not able to handle all settings from the // ticket. INVALID_TICKET, // Document is invalid. For example, data may be corrupted or the format is // incompatible with the extension. INVALID_DATA }; // Printer description for $(ref:onGetPrintersRequested) event. dictionary PrinterInfo { // Unique printer ID. DOMString id; // Printer's human readable name. DOMString name; // Printer's human readable description. DOMString? description; }; // Printing request parameters. Passed to $(ref:onPrintRequested) event. dictionary PrintJob { // ID of the printer which should handle the job. DOMString printerId; // The print job title. DOMString title; // Print ticket in // // CJT format. object ticket; // The document content type. Supported formats are // "application/pdf" and "image/pwg-raster". DOMString contentType; // Blob containing the document data to print. Format must match // |contentType|. [instanceOf=Blob] object document; }; callback PrintersCallback = void(PrinterInfo[] printerInfo); callback PrinterInfoCallback = void(optional PrinterInfo printerInfo); // |capabilities|: Device capabilities in // CDD // format. callback CapabilitiesCallback = void(object capabilities); callback PrintCallback = void(PrintError result); interface Events { // Event fired when print manager requests printers provided by extensions. // |resultCallback|: Callback to return printer list. Every listener must // call callback exactly once. static void onGetPrintersRequested(PrintersCallback resultCallback); // Event fired when print manager requests information about a USB device // that may be a printer. //

Note: An application should not rely on this event being // fired more than once per device. If a connected device is supported it // should be returned in the $(ref:onGetPrintersRequested) event.

// |device|: The USB device. // |resultCallback|: Callback to return printer info. The receiving listener // must call callback exactly once. If the parameter to this callback is // undefined that indicates that the application has determined that the // device is not supported. static void onGetUsbPrinterInfoRequested( usb.Device device, PrinterInfoCallback resultCallback); // Event fired when print manager requests printer capabilities. // |printerId|: Unique ID of the printer whose capabilities are requested. // |resultCallback|: Callback to return device capabilities in // CDD // format. // The receiving listener must call callback exectly once. static void onGetCapabilityRequested(DOMString printerId, CapabilitiesCallback resultCallback); // Event fired when print manager requests printing. // |printJob|: The printing request parameters. // |resultCallback|: Callback that should be called when the printing // request is completed. static void onPrintRequested(PrintJob printJob, PrintCallback resultCallback); }; };