Index: chrome/browser/resources/print_preview/data/cloud_capabilities.js |
diff --git a/chrome/browser/resources/print_preview/data/cloud_capabilities.js b/chrome/browser/resources/print_preview/data/cloud_capabilities.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7bb107f2d3171d9a5a7dfb5337e3fd099cf96820 |
--- /dev/null |
+++ b/chrome/browser/resources/print_preview/data/cloud_capabilities.js |
@@ -0,0 +1,413 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+cr.define('print_preview', function() { |
+ 'use strict'; |
+ |
+ /** |
+ * Capabilities of a cloud-based print destination. |
+ * @param {print_preview.CollateCapability} collateCapability Print |
+ * destination collate capability. |
+ * @param {print_preview.ColorCapability} colorCapability Print destination |
+ * color capability. |
+ * @param {print_preview.CopiesCapability} copiesCapability Print destination |
+ * copies capability. |
+ * @param {print_preview.DuplexCapability} duplexCapability Print destination |
+ * duplexing capability. |
+ * @constructor |
+ * @extends {print_preview.ChromiumCapabilities} |
+ */ |
+ function CloudCapabilities( |
+ collateCapability, colorCapability, copiesCapability, duplexCapability) { |
+ print_preview.ChromiumCapabilities.call( |
+ this, |
+ !!copiesCapability, |
+ '1' /*defaultCopiesStr*/, |
+ !!collateCapability, |
+ !!collateCapability && collateCapability.isCollateDefault, |
+ !!duplexCapability, |
+ !!duplexCapability && duplexCapability.isDuplexDefault, |
+ true /*hasOrientationCapability*/, |
+ false /*defaultIsLandscapeEnabled*/, |
+ !!colorCapability, |
+ !!colorCapability && colorCapability.isColorDefault); |
+ |
+ /** |
+ * Print destination collate capability. |
+ * @type {print_preview.CollateCapability} |
+ * @private |
+ */ |
+ this.collateCapability_ = collateCapability; |
+ |
+ /** |
+ * Print destination color capability. |
+ * @type {print_preview.ColorCapability} |
+ * @private |
+ */ |
+ this.colorCapability_ = colorCapability; |
+ |
+ /** |
+ * Print destination copies capability. |
+ * @type {print_preview.CopiesCapability} |
+ * @private |
+ */ |
+ this.copiesCapability_ = copiesCapability; |
+ |
+ /** |
+ * Print destination duplexing capability. |
+ * @type {print_preview.DuplexCapability} |
+ * @private |
+ */ |
+ this.duplexCapability_ = duplexCapability; |
+ }; |
+ |
+ /** |
+ * Enumeration of the capability formats of cloud-based print destinations. |
+ * @enum {string} |
+ */ |
+ CloudCapabilities.Format = { |
+ HP: 'hp', |
+ PPD: 'ppd', |
+ XPS: 'xps' |
+ }; |
+ |
+ CloudCapabilities.prototype = { |
+ __proto__: print_preview.ChromiumCapabilities.prototype, |
+ |
+ /** |
+ * @return {print_preview.CollateCapability} The print destination's collate |
+ * capability. |
+ */ |
+ get collateCapability() { |
+ return this.collateCapability_; |
+ }, |
+ |
+ /** |
+ * @return {print_preview.CollateCapability} The print destination's color |
+ * capability. |
+ */ |
+ get colorCapability() { |
+ return this.colorCapability_; |
+ }, |
+ |
+ /** |
+ * @return {print_preview.CollateCapability} The print destination's copies |
+ * capability. |
+ */ |
+ get copiesCapability() { |
+ return this.copiesCapability_; |
+ }, |
+ |
+ /** |
+ * @return {print_preview.CollateCapability} The print destination's |
+ * duplexing capability. |
+ */ |
+ get duplexCapability() { |
+ return this.duplexCapability_; |
+ } |
+ }; |
+ |
+ /** |
+ * A single print capability of a cloud-based print destination. |
+ * @param {string} id Identifier of the capability. |
+ * @param {print_preview.CloudCapability.Type} type Type of the capability. |
+ * @constructor |
+ */ |
+ function CloudCapability(id, type) { |
+ /** |
+ * Identifier of the capability. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.id_ = id; |
+ |
+ /** |
+ * Type of the capability. |
+ * @type {print_preview.CloudCapability.Type} |
+ * @private |
+ */ |
+ this.type_ = type; |
+ }; |
+ |
+ /** |
+ * Enumeration of the types of cloud-based print capabilities. |
+ * @enum {string} |
+ */ |
+ CloudCapability.Type = { |
+ FEATURE: 'Feature', |
+ PARAMETER_DEF: 'ParameterDef' |
+ }; |
+ |
+ CloudCapability.prototype = { |
+ /** @return {string} Identifier of the capability. */ |
+ get id() { |
+ return this.id_; |
+ }, |
+ |
+ /** @return {print_preview.CloudCapability.Type} Type of the capability. */ |
+ get type() { |
+ return this.type_; |
+ } |
+ }; |
+ |
+ /** |
+ * Cloud-based collate capability. |
+ * @param {string} id Identifier of the collate capability. |
+ * @param {string} collateOption Identifier of the option that enables |
+ * collation. |
+ * @param {string} noCollateOption Identifier of the option that disables |
+ * collation. |
+ * @param {boolean} isCollateDefault Whether collation is enabled by default. |
+ * @constructor |
+ * @extends {print_preview.CloudCapability} |
+ */ |
+ function CollateCapability( |
+ id, collateOption, noCollateOption, isCollateDefault) { |
+ CloudCapability.call(this, id, CloudCapability.Type.FEATURE); |
+ |
+ /** |
+ * Identifier of the option that enables collation. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.collateOption_ = collateOption; |
+ |
+ /** |
+ * Identifier of the option that disables collation. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.noCollateOption_ = noCollateOption; |
+ |
+ /** |
+ * Whether collation is enabled by default. |
+ * @type {boolean} |
+ * @private |
+ */ |
+ this.isCollateDefault_ = isCollateDefault; |
+ }; |
+ |
+ /** |
+ * Mapping of capability formats to an identifier of the collate capability. |
+ * @type {object<CloudCapabilities.Format, string>} |
+ */ |
+ CollateCapability.Id = {}; |
+ CollateCapability.Id[CloudCapabilities.Format.PPD] = 'Collate'; |
+ CollateCapability.Id[CloudCapabilities.Format.XPS] = 'psk:DocumentCollate'; |
+ |
+ /** |
+ * Regular expression that matches a collate option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ CollateCapability.COLLATE_REGEX = /(.*:collated.*|true)/i; |
+ |
+ /** |
+ * Regular expression that matches a no-collate option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ CollateCapability.NO_COLLATE_REGEX = /(.*:uncollated.*|false)/i; |
+ |
+ CollateCapability.prototype = { |
+ __proto__: CloudCapability.prototype, |
+ |
+ /** @return {string} Identifier of the option that enables collation. */ |
+ get collateOption() { |
+ return this.collateOption_; |
+ }, |
+ |
+ /** @return {string} Identifier of the option that disables collation. */ |
+ get noCollateOption() { |
+ return this.noCollateOption_; |
+ }, |
+ |
+ /** @return {boolean} Whether collation is enabled by default. */ |
+ get isCollateDefault() { |
+ return this.isCollateDefault_; |
+ } |
+ }; |
+ |
+ /** |
+ * Cloud-based color print capability. |
+ * @param {string} id Identifier of the color capability. |
+ * @param {string} colorOption Identifier of the color option. |
+ * @param {string} bwOption Identifier of the black-white option. |
+ * @param {boolean} Whether color printing is enabled by default. |
+ * @constructor |
+ */ |
+ function ColorCapability(id, colorOption, bwOption, isColorDefault) { |
+ CloudCapability.call(this, id, CloudCapability.Type.FEATURE); |
+ |
+ /** |
+ * Identifier of the color option. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.colorOption_ = colorOption; |
+ |
+ /** |
+ * Identifier of the black-white option. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.bwOption_ = bwOption; |
+ |
+ /** |
+ * Whether to print in color by default. |
+ * @type {boolean} |
+ * @private |
+ */ |
+ this.isColorDefault_ = isColorDefault; |
+ }; |
+ |
+ /** |
+ * Mapping of capability formats to an identifier of the color capability. |
+ * @type {object<CloudCapabilities.Format, string>} |
+ */ |
+ ColorCapability.Id = {}; |
+ ColorCapability.Id[CloudCapabilities.Format.HP] = 'ns1:Colors'; |
+ ColorCapability.Id[CloudCapabilities.Format.PPD] = 'ColorModel'; |
+ ColorCapability.Id[CloudCapabilities.Format.XPS] = 'psk:PageOutputColor'; |
+ |
+ /** |
+ * Regular expression that matches a color option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ ColorCapability.COLOR_REGEX = /(.*color.*|.*rgb.*|.*cmy.*|true)/i; |
+ |
+ /** |
+ * Regular expression that matches a black-white option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ ColorCapability.BW_REGEX = /(.*gray.*|.*mono.*|.*black.*|false)/i; |
+ |
+ ColorCapability.prototype = { |
+ __proto__: CloudCapability.prototype, |
+ |
+ /** @return {string} Identifier of the color option. */ |
+ get colorOption() { |
+ return this.colorOption_; |
+ }, |
+ |
+ /** @return {string} Identifier of the black-white option. */ |
+ get bwOption() { |
+ return this.bwOption_; |
+ }, |
+ |
+ /** @return {boolean} Whether to print in color by default. */ |
+ get isColorDefault() { |
+ return this.isColorDefault_; |
+ } |
+ }; |
+ |
+ /** |
+ * Cloud-based copies print capability. |
+ * @param {string} id Identifier of the copies capability. |
+ * @constructor |
+ */ |
+ function CopiesCapability(id) { |
+ CloudCapability.call(this, id, CloudCapability.Type.PARAMETER_DEF); |
+ }; |
+ |
+ CopiesCapability.prototype = { |
+ __proto__: CloudCapability.prototype |
+ }; |
+ |
+ /** |
+ * Mapping of capability formats to an identifier of the copies capability. |
+ * @type {object<CloudCapabilities.Format, string>} |
+ */ |
+ CopiesCapability.Id = {}; |
+ CopiesCapability.Id[CloudCapabilities.Format.XPS] = |
+ 'psk:JobCopiesAllDocuments'; |
+ |
+ /** |
+ * Cloud-based duplex print capability. |
+ * @param {string} id Identifier of the duplex capability. |
+ * @param {string} simplexOption Identifier of the no-duplexing option. |
+ * @param {string} longEdgeOption Identifier of the duplex on long edge |
+ * option. |
+ * @param {boolean} Whether duplexing is enabled by default. |
+ * @constructor |
+ */ |
+ function DuplexCapability( |
+ id, simplexOption, longEdgeOption, isDuplexDefault) { |
+ CloudCapability.call(this, id, CloudCapability.Type.FEATURE); |
+ |
+ /** |
+ * Identifier of the no-duplexing option. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.simplexOption_ = simplexOption; |
+ |
+ /** |
+ * Identifier of the duplex on long edge option. |
+ * @type {string} |
+ * @private |
+ */ |
+ this.longEdgeOption_ = longEdgeOption; |
+ |
+ /** |
+ * Whether duplexing is enabled by default. |
+ * @type {boolean} |
+ * @private |
+ */ |
+ this.isDuplexDefault_ = isDuplexDefault; |
+ }; |
+ |
+ /** |
+ * Mapping of capability formats to an identifier of the duplex capability. |
+ * @type {object<CloudCapabilities.Format, string>} |
+ */ |
+ DuplexCapability.Id = {}; |
+ DuplexCapability.Id[CloudCapabilities.Format.PPD] = 'Duplex'; |
+ DuplexCapability.Id[CloudCapabilities.Format.XPS] = |
+ 'psk:JobDuplexAllDocumentsContiguously'; |
+ |
+ /** |
+ * Regular expression that matches a no-duplexing option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ DuplexCapability.SIMPLEX_REGEX = /(.*onesided.*|.*none.*)/i; |
+ |
+ /** |
+ * Regular expression that matches a duplex on long edge option. |
+ * @type {!RegExp} |
+ * @const |
+ */ |
+ DuplexCapability.LONG_EDGE_REGEX = /(.*longedge.*|duplexNoTumble)/i; |
+ |
+ DuplexCapability.prototype = { |
+ __proto__: CloudCapability.prototype, |
+ |
+ /** @return {string} Identifier of the no-duplexing option. */ |
+ get simplexOption() { |
+ return this.simplexOption_; |
+ }, |
+ |
+ /** @return {string} Identifier of the duplex on long edge option. */ |
+ get longEdgeOption() { |
+ return this.longEdgeOption_; |
+ }, |
+ |
+ /** @return {boolean} Whether duplexing is enabled by default. */ |
+ get isDuplexDefault() { |
+ return this.isDuplexDefault_; |
+ } |
+ }; |
+ |
+ // Export |
+ return { |
+ CloudCapabilities: CloudCapabilities, |
+ CollateCapability: CollateCapability, |
+ ColorCapability: ColorCapability, |
+ CopiesCapability: CopiesCapability, |
+ DuplexCapability: DuplexCapability |
+ }; |
+}); |