gecko-dev/widget/nsIPrinter.idl
Emily McDonough 1fbcb914c4 Bug 1663652 part 1 - Implement combined CreateDefaultSettings and GetPaperList interface for nsPrinterBase r=emilio,mstriemer
This also changes the frontend to use this interface.

This will be a bit less efficient in the general case, as it will serialize the
PaperList and DefaultSettings fetches. But most of the large delays seem to
occur when the print server is slow to respond, and ultimately using a single
live connection for both these requests when possible (particularly with CUPS)
should improve the total latency when the printer or print server is not
available, or is very slow.

Differential Revision: https://phabricator.services.mozilla.com/D93688
2020-11-03 20:35:38 +00:00

75 lines
2.2 KiB
Plaintext

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsIPaper.idl"
#include "nsIPrintSettings.idl"
#include "nsISupports.idl"
[scriptable, uuid(855ae9dd-62a4-64aa-9c60-b1078ff028f1)]
interface nsIPrinterInfo : nsISupports
{
/**
* An array of nsIPaper instances that represents the available paper sizes.
*/
readonly attribute Array<nsIPaper> paperList;
/**
* nsIPrintSettings object containing the default settings for a printer.
*/
readonly attribute nsIPrintSettings defaultSettings;
};
[scriptable, uuid(d2dde9bb-df86-469c-bfcc-fd95a44b1db8)]
interface nsIPrinter : nsISupports
{
/**
* The name of the printer.
*/
readonly attribute AString name;
/**
* The system name of the printer.
*
* This may be faster for lookup in nsIPrinterList functions, but will only
* work for functions that will accept the system name.
*/
readonly attribute AString systemName;
/**
* Returns a Promise that resolves to a nsIPrinterInfo.
* This will contain the default printer settings, and the list of paper
* sizes supported by the printer.
*/
[implicit_jscontext]
readonly attribute Promise printerInfo;
/**
* Returns a Promise that resolves to true or false to indicate whether this
* printer supports duplex printing.
*/
[implicit_jscontext]
readonly attribute Promise supportsDuplex;
/**
* Returns a Promise that resolves to true or false to indicate whether this
* printer supports color printing.
*/
[implicit_jscontext]
readonly attribute Promise supportsColor;
/**
* Returns a Promise that resolves to true or false to indicate whether this
* printer supports monochrome printing.
*/
[implicit_jscontext]
readonly attribute Promise supportsMonochrome;
/**
* Returns a Promise that resolves to true or false to indicate whether this
* printer supports collation.
*/
[implicit_jscontext]
readonly attribute Promise supportsCollation;
};