local_parsers.js revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('print_preview', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** Namespace that contains a method to parse local print destinations. */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function LocalDestinationParser() {};
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Parses a local print destination.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!Object} destinationInfo Information describing a local print
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     destination.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return {!print_preview.Destination} Parsed local print destination.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalDestinationParser.parse = function(destinationInfo) {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return new print_preview.Destination(
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        destinationInfo.deviceName,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        print_preview.Destination.Type.LOCAL,
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        print_preview.Destination.Origin.LOCAL,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        destinationInfo.printerName,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        false /*isRecent*/,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        print_preview.Destination.ConnectionStatus.ONLINE);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** Namespace that contains a method to parse local print capabilities. */
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function LocalCapabilitiesParser() {};
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Parses local print capabilities.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!Object} settingsInfo Object that describes local print
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     capabilities.
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * @return {!print_preview.Cdd} Parsed local print capabilities.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalCapabilitiesParser.parse = function(settingsInfo) {
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    var cdd = {
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      version: '1.0',
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      printer: {
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        collate: {default: true}
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      }
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    };
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    if (!settingsInfo['disableColorOption']) {
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      cdd.printer.color = {
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        option: [
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            type: 'STANDARD_COLOR',
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            is_default: !!settingsInfo['setColorAsDefault']
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          },
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            type: 'STANDARD_MONOCHROME',
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            is_default: !settingsInfo['setColorAsDefault']
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          }
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        ]
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      }
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    }
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    if (!settingsInfo['disableCopiesOption']) {
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      cdd.printer.copies = {default: 1};
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    }
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    if (settingsInfo['printerDefaultDuplexValue'] !=
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        print_preview.NativeLayer.DuplexMode.UNKNOWN_DUPLEX_MODE) {
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      cdd.printer.duplex = {
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        option: [
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {type: 'NO_DUPLEX', is_default: !settingsInfo['setDuplexAsDefault']},
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {type: 'LONG_EDGE', is_default: !!settingsInfo['setDuplexAsDefault']}
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        ]
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      };
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    }
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    if (!settingsInfo['disableLandscapeOption']) {
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      cdd.printer.page_orientation = {
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        option: [
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {type: 'PORTRAIT', is_default: true},
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {type: 'LANDSCAPE'}
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        ]
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      };
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return cdd;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  function PrivetDestinationParser() {}
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /**
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)   * Parses a privet destination as one or more local printers.
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @param {!Object} destinationInfo Object that describes a privet printer.
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)   * @return {!Array.<!print_preview.Destination>} Parsed destination info.
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   */
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PrivetDestinationParser.parse = function(destinationInfo) {
93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    var returnedPrinters = [];
94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (destinationInfo.hasLocalPrinting) {
96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)       returnedPrinters.push(new print_preview.Destination(
97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)           destinationInfo.serviceName,
98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)           print_preview.Destination.Type.LOCAL,
99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)           print_preview.Destination.Origin.PRIVET,
100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)           destinationInfo.name,
101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)           false /*isRecent*/,
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)           print_preview.Destination.ConnectionStatus.ONLINE,
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)           { cloudID: destinationInfo.cloudID }));
104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (destinationInfo.isUnregistered) {
107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      returnedPrinters.push(new print_preview.Destination(
108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        destinationInfo.serviceName,
109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          print_preview.Destination.Type.GOOGLE,
110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          print_preview.Destination.Origin.PRIVET,
111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          destinationInfo.name,
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          false /*isRecent*/,
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          print_preview.Destination.ConnectionStatus.UNREGISTERED));
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return returnedPrinters;
117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  };
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LocalCapabilitiesParser: LocalCapabilitiesParser,
122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    LocalDestinationParser: LocalDestinationParser,
123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PrivetDestinationParser: PrivetDestinationParser
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
126