Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / resources / print_preview / data / ticket_items / page_range.js
blob013263bbdc5d4cee8bcc687416de0eb21413bbeb
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    * Page range ticket item whose value is a {@code string} that represents
10    * which pages in the document should be printed.
11    * @param {!print_preview.DocumentInfo} documentInfo Information about the
12    *     document to print.
13    * @constructor
14    * @extends {print_preview.ticket_items.TicketItem}
15    */
16   function PageRange(documentInfo) {
17     print_preview.ticket_items.TicketItem.call(
18         this,
19         null /*appState*/,
20         null /*field*/,
21         null /*destinationStore*/,
22         documentInfo);
23   };
25   /**
26    * Impossibly large page number.
27    * @type {number}
28    * @const
29    * @private
30    */
31   PageRange.MAX_PAGE_NUMBER_ = 1000000000;
33   PageRange.prototype = {
34     __proto__: print_preview.ticket_items.TicketItem.prototype,
36     /** @override */
37     wouldValueBeValid: function(value) {
38       return null != pageRangeTextToPageRanges(
39           value, this.getDocumentInfoInternal().pageCount);
40     },
42     /**
43      * @return {!print_preview.PageNumberSet} Set of page numbers defined by the
44      *     page range string.
45      */
46     getPageNumberSet: function() {
47       var pageNumberList = pageRangeTextToPageList(
48           this.getValue(), this.getDocumentInfoInternal().pageCount);
49       return new print_preview.PageNumberSet(pageNumberList);
50     },
52     /** @override */
53     isCapabilityAvailable: function() {
54       return true;
55     },
57     /** @override */
58     getDefaultValueInternal: function() {
59       return '';
60     },
62     /** @override */
63     getCapabilityNotAvailableValueInternal: function() {
64       return '';
65     },
67     /**
68      * @return {!Array.<Object.<{from: number, to: number}>>} A list of page
69      *     ranges.
70      */
71     getPageRanges: function() {
72       return pageRangeTextToPageRanges(this.getValue()) || [];
73     },
75     /**
76      * @return {!Array.<object.<{from: number, to: number}>>} A list of page
77      *     ranges suitable for use in the native layer.
78      * TODO(vitalybuka): this should be removed when native layer switched to
79      *     page ranges.
80      */
81     getDocumentPageRanges: function() {
82       var pageRanges = pageRangeTextToPageRanges(
83           this.getValue(), this.getDocumentInfoInternal().pageCount);
84       return pageRanges || [];
85     },
86   };
88   // Export
89   return {
90     PageRange: PageRange
91   };
92 });