local_parsers.js revision 5821806d5e7f356e8fa4b058a389a808ea183019
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,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        destinationInfo.printerName,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        false /*isRecent*/,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        print_preview.Destination.ConnectionStatus.ONLINE);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** Namespace that contains a method to parse local print capabilities. */
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function LocalCapabilitiesParser() {};
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Parses local print capabilities.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!Object} settingsInfo Object that describes local print
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     capabilities.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return {!print_preview.ChromiumCapabilities} Parsed local print
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     capabilities.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalCapabilitiesParser.parse = function(settingsInfo) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var hasColorCapability = false;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var defaultIsColorEnabled = false;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (hasColorCapability = !settingsInfo['disableColorOption']) {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      defaultIsColorEnabled = settingsInfo['setColorAsDefault'];
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var hasDuplexCapability = false;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var defaultIsDuplexEnabled = false;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // On Windows, some printers don't specify their duplex values in the
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // printer schema. If the printer duplex value is UNKNOWN_DUPLEX_MODE,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // hide the two sided option in preview tab UI.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Ref bug: http://crbug.com/89204
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (hasDuplexCapability =
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        settingsInfo['printerDefaultDuplexValue'] !=
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        print_preview.NativeLayer.DuplexMode.UNKNOWN_DUPLEX_MODE) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      defaultIsDuplexEnabled = settingsInfo['setDuplexAsDefault'] || false;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return new print_preview.ChromiumCapabilities(
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        !settingsInfo['disableCopiesOption'] /*hasCopiesCapability*/,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '1' /*defaultCopiesStr*/,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        true /*hasCollateCapability*/,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        true /*defaultIsCollateEnabled*/,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        hasDuplexCapability,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        defaultIsDuplexEnabled,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        !settingsInfo['disableLandscapeOption'] /*hasOrientationCapability*/,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        false /*defaultIsLandscapeEnabled*/,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        hasColorCapability,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        defaultIsColorEnabled);
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LocalCapabilitiesParser: LocalCapabilitiesParser,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LocalDestinationParser: LocalDestinationParser
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
74