Pass location and description of local printers into print preview.

OSX already uses description as display name for printers, so pass printer model instead.

BUG=256223
NOTRY=true

Review URL: https://codereview.chromium.org/214443007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260383 0039d316-1c4b-4281-b951-d872f2087c98
parent 13582f6b
......@@ -15,13 +15,21 @@ cr.define('print_preview', function() {
* @return {!print_preview.Destination} Parsed local print destination.
*/
LocalDestinationParser.parse = function(destinationInfo) {
var options = {'description': destinationInfo.printerDescription};
if (destinationInfo.printerOptions) {
// Convert options into cloud print tags format.
options.tags = Object.keys(destinationInfo.printerOptions).map(
function(key) {return '__cp__' + key + '=' + this[key];},
destinationInfo.printerOptions);
}
return new print_preview.Destination(
destinationInfo.deviceName,
print_preview.Destination.Type.LOCAL,
print_preview.Destination.Origin.LOCAL,
destinationInfo.printerName,
false /*isRecent*/,
print_preview.Destination.ConnectionStatus.ONLINE);
print_preview.Destination.ConnectionStatus.ONLINE,
options);
};
/** Namespace that contains a method to parse local print capabilities. */
......@@ -37,7 +45,7 @@ cr.define('print_preview', function() {
var cdd = {
version: '1.0',
printer: {
collate: {default: true}
collate: {'default': true}
}
};
......@@ -53,11 +61,11 @@ cr.define('print_preview', function() {
is_default: !settingsInfo['setColorAsDefault']
}
]
}
};
}
if (!settingsInfo['disableCopiesOption']) {
cdd.printer.copies = {default: 1};
cdd.printer.copies = {'default': 1};
}
if (settingsInfo['printerDefaultDuplexValue'] !=
......@@ -105,7 +113,7 @@ cr.define('print_preview', function() {
if (destinationInfo.isUnregistered) {
returnedPrinters.push(new print_preview.Destination(
destinationInfo.serviceName,
destinationInfo.serviceName,
print_preview.Destination.Type.GOOGLE,
print_preview.Destination.Origin.PRIVET,
destinationInfo.name,
......
......@@ -62,6 +62,7 @@
#include "content/public/browser/web_ui.h"
#include "google_apis/gaia/oauth2_token_service.h"
#include "printing/backend/print_backend.h"
#include "printing/backend/print_backend_consts.h"
#include "printing/metafile.h"
#include "printing/metafile_impl.h"
#include "printing/pdf_render_settings.h"
......@@ -286,19 +287,36 @@ void EnumeratePrintersOnFileThread(
for (printing::PrinterList::iterator it = printer_list.begin();
it != printer_list.end(); ++it) {
base::DictionaryValue* printer_info = new base::DictionaryValue;
printers->Append(printer_info);
std::string printer_name;
std::string printer_description;
#if defined(OS_MACOSX)
// On Mac, |it->printer_description| specifies the printer name and
// |it->printer_name| specifies the device name / printer queue name.
printer_name = it->printer_description;
if (!it->options[kDriverNameTagName].empty())
printer_description = it->options[kDriverNameTagName];
#else
printer_name = it->printer_name;
printer_description = it->printer_description;
#endif
printer_info->SetString(printing::kSettingPrinterName, printer_name);
printer_info->SetString(printing::kSettingDeviceName, it->printer_name);
printer_info->SetString(printing::kSettingPrinterDescription,
printer_description);
printer_info->SetString(printing::kSettingPrinterName, printer_name);
VLOG(1) << "Found printer " << printer_name
<< " with device name " << it->printer_name;
printers->Append(printer_info);
base::DictionaryValue* options = new base::DictionaryValue;
printer_info->Set(printing::kSettingPrinterOptions, options);
for (std::map<std::string, std::string>::iterator opt = it->options.begin();
opt != it->options.end();
++opt) {
options->SetString(opt->first, opt->second);
}
VLOG(1) << "Found printer " << printer_name << " with device name "
<< it->printer_name;
}
VLOG(1) << "Enumerate printers finished, found " << printers->GetSize()
<< " printers";
......
......@@ -123,6 +123,12 @@ const char kSettingPrintableAreaHeight[] = "printableAreaHeight";
// Printer name.
const char kSettingPrinterName[] = "printerName";
// Printer description.
const char kSettingPrinterDescription[] = "printerDescription";
// Additional printer options.
const char kSettingPrinterOptions[] = "printerOptions";
// Print to PDF option: true if selected, false if not.
const char kSettingPrintToPDF[] = "printToPDF";
......
......@@ -45,13 +45,15 @@ PRINTING_EXPORT extern const char kSettingPageRangeTo[];
PRINTING_EXPORT extern const char kSettingPageWidth[];
PRINTING_EXPORT extern const char kSettingPageHeight[];
PRINTING_EXPORT extern const char kSettingPreviewModifiable[];
PRINTING_EXPORT extern const char kSettingPrintToPDF[];
PRINTING_EXPORT extern const char kSettingPrintWithPrivet[];
PRINTING_EXPORT extern const char kSettingPrintableAreaHeight[];
PRINTING_EXPORT extern const char kSettingPrintableAreaWidth[];
PRINTING_EXPORT extern const char kSettingPrintableAreaX[];
PRINTING_EXPORT extern const char kSettingPrintableAreaY[];
PRINTING_EXPORT extern const char kSettingPrintableAreaWidth[];
PRINTING_EXPORT extern const char kSettingPrintableAreaHeight[];
PRINTING_EXPORT extern const char kSettingPrinterDescription[];
PRINTING_EXPORT extern const char kSettingPrinterName[];
PRINTING_EXPORT extern const char kSettingPrintToPDF[];
PRINTING_EXPORT extern const char kSettingPrintWithPrivet[];
PRINTING_EXPORT extern const char kSettingPrinterOptions[];
PRINTING_EXPORT extern const char kSettingTicket[];
PRINTING_EXPORT extern const char kSettingShouldPrintBackgrounds[];
PRINTING_EXPORT extern const char kSettingShouldPrintSelectionOnly[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment