blob: 4a36086746f75885bd73d5a651a4ff46209d46fc [file] [log] [blame]
// Copyright 2017 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.
// Utility routines for working with UsbDevices that are printers.
#ifndef CHROME_BROWSER_CHROMEOS_PRINTING_USB_PRINTER_UTIL_H__
#define CHROME_BROWSER_CHROMEOS_PRINTING_USB_PRINTER_UTIL_H__
#include <memory>
#include <string>
#include "base/memory/ref_counted.h"
namespace device {
class UsbDevice;
}
namespace chromeos {
class Printer;
bool UsbDeviceIsPrinter(const device::UsbDevice& usb_device);
// Convert the interesting details of a device to a string, for
// logging/debugging.
std::string UsbPrinterDeviceDetailsAsString(const device::UsbDevice& device);
// Attempt to gather all the information we need to work with this printer by
// querying the USB device. This should only be called using devices we believe
// are printers, not arbitrary USB devices, as we may get weird partial results
// from arbitrary devices.
//
// Returns nullptr and logs an error on failure.
std::unique_ptr<Printer> UsbDeviceToPrinter(const device::UsbDevice& device);
// Gets the URI CUPS would use to refer to this USB device. Assumes device
// is a printer.
std::string UsbPrinterUri(const device::UsbDevice& device);
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PRINTING_USB_PRINTER_UTIL_H__