| Index: printing/backend/print_backend_cups.cc
|
| diff --git a/printing/backend/print_backend_cups.cc b/printing/backend/print_backend_cups.cc
|
| index 9a17ddf4c39d57ea9431a857c5259c976a5cffef..c14af0326fd7cdf88ce5fd0cc48dcf95800cb7ac 100644
|
| --- a/printing/backend/print_backend_cups.cc
|
| +++ b/printing/backend/print_backend_cups.cc
|
| @@ -98,6 +98,7 @@ namespace printing {
|
| static const char kCUPSPrinterInfoOpt[] = "printer-info";
|
| static const char kCUPSPrinterStateOpt[] = "printer-state";
|
| static const char kCUPSPrinterTypeOpt[] = "printer-type";
|
| +static const char kCUPSPrinterMakeModelOpt[] = "printer-make-and-model";
|
|
|
| class PrintBackendCUPS : public PrintBackend {
|
| public:
|
| @@ -113,8 +114,8 @@ class PrintBackendCUPS : public PrintBackend {
|
| const std::string& printer_name,
|
| PrinterCapsAndDefaults* printer_info) OVERRIDE;
|
|
|
| - virtual bool GetPrinterDriverInfo(const std::string& printer_name,
|
| - std::string* driver_info) OVERRIDE;
|
| + virtual std::string GetPrinterDriverInfo(
|
| + const std::string& printer_name) OVERRIDE;
|
|
|
| virtual bool IsValidPrinter(const std::string& printer_name) OVERRIDE;
|
|
|
| @@ -228,10 +229,24 @@ bool PrintBackendCUPS::GetPrinterCapsAndDefaults(
|
| return res;
|
| }
|
|
|
| -bool PrintBackendCUPS::GetPrinterDriverInfo(const std::string& printer_name,
|
| - std::string* driver_info) {
|
| - // TODO(vitalybuka): MAC implementation. http://crbug.com/108194
|
| - return false;
|
| +std::string PrintBackendCUPS::GetPrinterDriverInfo(
|
| + const std::string& printer_name) {
|
| + cups_dest_t* destinations = NULL;
|
| + int num_dests = GetDests(&destinations);
|
| + std::string result;
|
| + for (int printer_index = 0; printer_index < num_dests; printer_index++) {
|
| + const cups_dest_t& printer = destinations[printer_index];
|
| + if (printer_name == printer.name) {
|
| + const char* info = cupsGetOption(kCUPSPrinterMakeModelOpt,
|
| + printer.num_options,
|
| + printer.options);
|
| + if (info)
|
| + result = *info;
|
| + }
|
| + }
|
| +
|
| + cupsFreeDests(num_dests, destinations);
|
| + return result;
|
| }
|
|
|
| bool PrintBackendCUPS::IsValidPrinter(const std::string& printer_name) {
|
|
|