1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 cr.define('print_preview', function() {
8 /** Namespace that contains a method to parse local print destinations. */
9 function LocalDestinationParser() {};
12 * Parses a local print destination.
13 * @param {!Object} destinationInfo Information describing a local print
15 * @return {!print_preview.Destination} Parsed local print destination.
17 LocalDestinationParser.parse = function(destinationInfo) {
18 var options = {'description': destinationInfo.printerDescription};
19 if (destinationInfo.printerOptions) {
20 // Convert options into cloud print tags format.
21 options.tags = Object.keys(destinationInfo.printerOptions).map(
22 function(key) {return '__cp__' + key + '=' + this[key];},
23 destinationInfo.printerOptions);
25 return new print_preview.Destination(
26 destinationInfo.deviceName,
27 print_preview.Destination.Type.LOCAL,
28 print_preview.Destination.Origin.LOCAL,
29 destinationInfo.printerName,
31 print_preview.Destination.ConnectionStatus.ONLINE,
35 /** Namespace that contains a method to parse local print capabilities. */
36 function LocalCapabilitiesParser() {};
39 * Parses local print capabilities.
40 * @param {!Object} settingsInfo Object that describes local print
42 * @return {!print_preview.Cdd} Parsed local print capabilities.
44 LocalCapabilitiesParser.parse = function(settingsInfo) {
48 collate: {'default': true}
52 if (!settingsInfo['disableColorOption']) {
56 type: 'STANDARD_COLOR',
57 is_default: !!settingsInfo['setColorAsDefault']
60 type: 'STANDARD_MONOCHROME',
61 is_default: !settingsInfo['setColorAsDefault']
67 if (!settingsInfo['disableCopiesOption']) {
68 cdd.printer.copies = {'default': 1};
71 if (settingsInfo['printerDefaultDuplexValue'] !=
72 print_preview.NativeLayer.DuplexMode.UNKNOWN_DUPLEX_MODE) {
73 cdd.printer.duplex = {
75 {type: 'NO_DUPLEX', is_default: !settingsInfo['setDuplexAsDefault']},
76 {type: 'LONG_EDGE', is_default: !!settingsInfo['setDuplexAsDefault']}
81 if (!settingsInfo['disableLandscapeOption']) {
82 cdd.printer.page_orientation = {
84 {type: 'PORTRAIT', is_default: true},
93 function PrivetDestinationParser() {}
96 * Parses a privet destination as one or more local printers.
97 * @param {!Object} destinationInfo Object that describes a privet printer.
98 * @return {!Array.<!print_preview.Destination>} Parsed destination info.
100 PrivetDestinationParser.parse = function(destinationInfo) {
101 var returnedPrinters = [];
103 if (destinationInfo.hasLocalPrinting) {
104 returnedPrinters.push(new print_preview.Destination(
105 destinationInfo.serviceName,
106 print_preview.Destination.Type.LOCAL,
107 print_preview.Destination.Origin.PRIVET,
108 destinationInfo.name,
110 print_preview.Destination.ConnectionStatus.ONLINE,
111 { cloudID: destinationInfo.cloudID }));
114 if (destinationInfo.isUnregistered) {
115 returnedPrinters.push(new print_preview.Destination(
116 destinationInfo.serviceName,
117 print_preview.Destination.Type.GOOGLE,
118 print_preview.Destination.Origin.PRIVET,
119 destinationInfo.name,
121 print_preview.Destination.ConnectionStatus.UNREGISTERED));
124 return returnedPrinters;
129 LocalCapabilitiesParser: LocalCapabilitiesParser,
130 LocalDestinationParser: LocalDestinationParser,
131 PrivetDestinationParser: PrivetDestinationParser