Elim cr-checkbox
[chromium-blink-merge.git] / chrome / browser / resources / print_preview / data / ticket_items / duplex.js
blobd71f9382e951f72ca61e93ce000231f6028c64ed
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.ticket_items', function() {
6 'use strict';
8 /**
9 * Duplex ticket item whose value is a {@code boolean} that indicates whether
10 * the document should be duplex printed.
11 * @param {!print_preview.AppState} appState App state used to persist collate
12 * selection.
13 * @param {!print_preview.DestinationStore} destinationStore Destination store
14 * used determine if a destination has the collate capability.
15 * @constructor
16 * @extends {print_preview.ticket_items.TicketItem}
18 function Duplex(appState, destinationStore) {
19 print_preview.ticket_items.TicketItem.call(
20 this,
21 appState,
22 print_preview.AppState.Field.IS_DUPLEX_ENABLED,
23 destinationStore);
26 Duplex.prototype = {
27 __proto__: print_preview.ticket_items.TicketItem.prototype,
29 /** @override */
30 wouldValueBeValid: function(value) {
31 return true;
34 /** @override */
35 isCapabilityAvailable: function() {
36 var cap = this.getDuplexCapability_();
37 if (!cap) {
38 return false;
40 var hasLongEdgeOption = false;
41 var hasSimplexOption = false;
42 cap.option.forEach(function(option) {
43 hasLongEdgeOption = hasLongEdgeOption || option.type == 'LONG_EDGE';
44 hasSimplexOption = hasSimplexOption || option.type == 'NO_DUPLEX';
45 });
46 return hasLongEdgeOption && hasSimplexOption;
49 /** @override */
50 getDefaultValueInternal: function() {
51 var cap = this.getDuplexCapability_();
52 var defaultOptions = cap.option.filter(function(option) {
53 return option.is_default;
54 });
55 return defaultOptions.length == 0 ? false :
56 defaultOptions[0].type == 'LONG_EDGE';
59 /** @override */
60 getCapabilityNotAvailableValueInternal: function() {
61 return false;
64 /**
65 * @return {Object} Duplex capability of the selected destination.
66 * @private
68 getDuplexCapability_: function() {
69 var dest = this.getSelectedDestInternal();
70 return (dest &&
71 dest.capabilities &&
72 dest.capabilities.printer &&
73 dest.capabilities.printer.duplex) ||
74 null;
78 // Export
79 return {
80 Duplex: Duplex
82 });