Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1453)

Unified Diff: chrome/browser/resources/print_preview/data/chromium_capabilities.js

Issue 10108001: Refactor print preview web ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review feedback Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/print_preview/data/chromium_capabilities.js
diff --git a/chrome/browser/resources/print_preview/data/chromium_capabilities.js b/chrome/browser/resources/print_preview/data/chromium_capabilities.js
new file mode 100644
index 0000000000000000000000000000000000000000..d66132003ee53a8d0e9733736f8197937742a170
--- /dev/null
+++ b/chrome/browser/resources/print_preview/data/chromium_capabilities.js
@@ -0,0 +1,446 @@
+// 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';
+
+ /**
+ * A print ticket defines how the document should be rendered and printed.
+ *
dpapad 2012/04/24 01:24:56 Nit: Unnecessary blank line.
Robert Toscano 2012/04/24 22:29:56 Done.
+ * @param {!print_preview.ChromiumCapabilities} capabilities Printing
+ * capabilities of the print destination.
+ * @constructor
+ */
+ function ChromiumPrintTicket(capabilities) {
+ /**
+ * Printing capabilities of the print destination. Contains default values
+ * for each of the print ticket fields.
+ * @type {!print_preview.ChromiumCapabilities}
+ * @private
+ */
+ this.capabilities_ = capabilities;
+
+ /**
+ * String describing which pages to print. E.g. "1-5,9". {@code null} if the
+ * user has not specified a page range string.
+ * @type {?string}
+ * @private
+ */
+ this.pageRangeStr_ = null;
+
+ /**
+ * String representing the number of copies of the document to print.
+ * {@code null} if the user has not specified a copies string.
+ * @type {?string}
+ * @private
+ */
+ this.copiesStr_ = null;
+
+ /**
+ * Whether the document should be collated when printed. {@code null} if the
+ * user has not specified.
+ * @type {?boolean}
+ * @private
+ */
+ this.isCollateEnabled_ = null;
+
+ /**
+ * Whether the document should be duplexed. {@code null} if not specified.
+ * @type {?boolean}
+ * @private
+ */
+ this.isDuplexEnabled_ = null;
+
+ /**
+ * Whether the document should be printed in landscape. {@code null} if not
+ * specified.
+ * @type {?boolean}
+ * @private
+ */
+ this.isLandscapeEnabled_ = null;
+
+ /**
+ * Whether the document should be printed in color. {@code null} if not
+ * specified.
+ * @type {?boolean}
+ * @private
+ */
+ this.isColorEnabled_ = null;
+
+ /**
+ * Type of margins of the document. {@code null} if user has not specified.
+ * @type {?print_preview.Margins.Type}
dpapad 2012/04/24 01:24:56 I think that "?" makes sense only for primitives.
Robert Toscano 2012/04/24 22:29:56 It's not explicitly mentioned in the js doc whethe
dpapad 2012/04/24 22:50:19 Hm, I guess I never think of this as a typedef, bu
Robert Toscano 2012/04/28 01:41:37 I'm pretty sure the closure compiler will treat th
dpapad 2012/04/30 16:19:26 Sg.
+ * @private
+ */
+ this.marginsType_ = null;
+
+ /**
+ * Custom margins of the document. {@code null} if not specified.
+ * @type {print_preview.Margins}
+ * @private
+ */
+ this.customMargins_ = null;
+
+ /**
+ * Whether a header and footer should be added to the document. {@code null}
+ * if not specified.
+ * @type {?boolean}
+ * @private
+ */
+ this.isHeaderFooterEnabled_ = null;
+ };
+
+ ChromiumPrintTicket.prototype = {
+ /**
+ * @param {!print_preview.ChromiumCapabilities} capabilities New print
+ * destination capabilities to set.
+ */
+ set capabilities(capabilities) {
+ this.capabilities_ = capabilities;
+ },
+
+ /** @return {string} Page range string specification. */
+ get pageRangeStr() {
+ return this.pageRangeStr_ || '';
+ },
+
+ /** @param {string} pageRangeStr Page range string specification to set. */
+ set pageRangeStr(pageRangeStr) {
+ this.pageRangeStr_ = pageRangeStr;
+ },
+
+ /** @return {string} Number of copies to print in string form. */
+ get copiesStr() {
+ return this.getValue_(
+ this.capabilities_.hasCopiesCapability,
+ this.copiesStr_,
+ this.capabilities_.defaultCopiesStr,
+ '1');
+ },
+
+ /** @param {string} copiesStr String form of number of copies to print. */
+ set copiesStr(copiesStr) {
+ this.copiesStr_ = copiesStr;
+ },
+
+ /** @return {boolean} Whether the document should be collated. */
+ get isCollateEnabled() {
+ return this.getValue_(
+ this.capabilities_.hasCollateCapability,
+ this.isCollateEnabled_,
+ this.capabilities_.defaultIsCollateEnabled,
+ true);
+ },
+
+ /**
+ * @param {boolean} isCollateEnabled Whether the document should be
+ * collated.
+ */
+ set isCollateEnabled(isCollateEnabled) {
+ this.isCollateEnabled_ = isCollateEnabled;
+ },
+
+ /** @return {boolean} Whether the document should be duplexed. */
+ get isDuplexEnabled() {
+ return this.getValue_(
+ this.capabilities_.hasDuplexCapability,
+ this.isDuplexEnabled_,
+ this.capabilities_.defaultIsDuplexEnabled,
+ true);
+ },
+
+ /**
+ * @param {boolean} isDuplexEnabled Whether the document should be duplexed.
+ */
+ set isDuplexEnabled(isDuplexEnabled) {
+ this.isDuplexEnabled_ = isDuplexEnabled;
+ },
+
+ /**
+ * @return {boolean} Whether the document should be printed in landscape.
+ */
+ get isLandscapeEnabled() {
+ return this.getValue_(
+ this.capabilities_.hasOrientationCapability,
+ this.isLandscapeEnabled_,
+ this.capabilities_.defaultIsLandscapeEnabled,
+ false);
+ },
+
+ /**
+ * @param {boolean} isLandscapeEnabled Whether the document should be
+ * printed in landscape.
+ */
+ set isLandscapeEnabled(isLandscapeEnabled) {
+ this.isLandscapeEnabled_ = isLandscapeEnabled;
+ },
+
+ /** @return {boolean} Whether the document should be printed in color. */
+ get isColorEnabled() {
+ return this.getValue_(
+ this.capabilities_.hasColorCapability,
+ this.isColorEnabled_,
+ this.capabilities_.defaultIsColorEnabled,
+ false);
+ },
+
+ /**
+ * @param {boolean} isColorEnabled Whether the document should be printed in
+ * color.
+ */
+ set isColorEnabled(isColorEnabled) {
+ this.isColorEnabled_ = isColorEnabled;
+ },
+
+ /**
+ * @return {print_preview.Margins.Type} The document's predefined margins
+ * type.
+ */
+ get marginsType() {
+ return this.marginsType_ || print_preview.Margins.Type.DEFAULT;
+ },
+
+ /**
+ * @param {print_preview.Margins.Type} marginsType The document's predefined
+ * margins type.
+ */
+ set marginsType(marginsType) {
+ this.marginsType_ = marginsType;
+ },
+
+ /**
+ * @return {print_preview.Margins} Custom margins of the print document.
+ */
+ get customMargins() {
+ return this.customMargins_;
+ },
+
+ /**
+ * @param {print_preview.Margins} customMargins Custom margins of the
+ * print document.
+ */
+ set customMargins(customMargins) {
+ this.customMargins_ = customMargins;
+ },
+
+ /**
+ * @return {boolean} Whether a header footer should be superimposed on the
+ * document.
+ */
+ get isHeaderFooterEnabled() {
+ if (this.isHeaderFooterEnabled_ == null) {
+ return true;
+ } else {
+ return this.isHeaderFooterEnabled_;
+ }
+ },
+
+ /**
+ * @param {boolean} isHeaderFooterEnabled Whether a header footer should be
+ * superimposed on the document.
+ */
+ set isHeaderFooterEnabled(isHeaderFooterEnabled) {
+ this.isHeaderFooterEnabled_ = isHeaderFooterEnabled;
+ },
+
+ /**
+ * Gets the value of a capability of a renderer or print destination.
+ * @param {boolean} hasCap Whether the renderer or print destination has the
+ * given capability.
+ * @param {Object} userVal Value specified by the user.
+ * @param {Object} defaultCapVal Value specified as the default value of the
+ * given capability.
+ * @param {Object} defaultChromiumVal Value specified if the renderer or
+ * print destination does not have the given capability.
+ * @return {Object} User value if specified, then default capability value
+ * if capability is available, and finally default chromium value if
+ * capability not available.
+ * @private
+ */
+ getValue_: function(hasCap, userVal, defaultCapVal, defaultChromiumVal) {
+ if (hasCap && userVal != null) {
+ return userVal;
+ } else if (hasCap && defaultCapVal != null) {
+ return defaultCapVal;
+ } else {
+ return defaultChromiumVal;
+ }
+ }
+ };
+
+ /**
+ * Capabilities of a print destination not including the capabilities of the
+ * document renderer.
+ *
+ * @param {boolean} hasCopiesCapability Whether the print destination has a
+ * copies capability.
+ * @param {string} defaultCopiesStr Default string representation of the
+ * copies value.
+ * @param {boolean} hasCollateCapability Whether the print destination has
+ * collation capability.
+ * @param {boolean} defaultIsCollateEnabled Whether collate is enabled by
+ * default.
+ * @param {boolean} hasDuplexCapability Whether the print destination has
+ * duplexing capability.
+ * @param {boolean} defaultIsDuplexEnabled Whether duplexing is enabled by
+ * default.
+ * @param {boolean} hasOrientationCapability Whether the print destination has
+ * orientation capability.
+ * @param {boolean} defaultIsLandscapeEnabled Whether the document should be
+ * printed in landscape by default.
+ * @param {boolean} hasColorCapability Whether the print destination has
+ * color printing capability.
+ * @param {boolean} defaultIsColorEnabled Whether the document should be
+ * printed in color by default.
+ * @constructor
+ */
+ function ChromiumCapabilities(
+ hasCopiesCapability,
+ defaultCopiesStr,
+ hasCollateCapability,
+ defaultIsCollateEnabled,
+ hasDuplexCapability,
+ defaultIsDuplexEnabled,
+ hasOrientationCapability,
+ defaultIsLandscapeEnabled,
+ hasColorCapability,
+ defaultIsColorEnabled) {
+ /**
+ * Whether the print destination has a copies capability.
+ * @type {boolean}
+ * @private
+ */
+ this.hasCopiesCapability_ = hasCopiesCapability;
+
+ /**
+ * Default string representation of the copies value.
+ * @type {string}
+ * @private
+ */
+ this.defaultCopiesStr_ = defaultCopiesStr;
+
+ /**
+ * Whether the print destination has collation capability.
+ * @type {boolean}
+ * @private
+ */
+ this.hasCollateCapability_ = hasCollateCapability;
+
+ /**
+ * Whether collate is enabled by default.
+ * @type {boolean}
+ * @private
+ */
+ this.defaultIsCollateEnabled_ = defaultIsCollateEnabled;
+
+ /**
+ * Whether the print destination has duplexing capability.
+ * @type {boolean}
+ * @private
+ */
+ this.hasDuplexCapability_ = hasDuplexCapability;
+
+ /**
+ * Whether duplex is enabled by default.
+ * @type {boolean}
+ * @private
+ */
+ this.defaultIsDuplexEnabled_ = defaultIsDuplexEnabled;
+
+ /**
+ * Whether the print destination has orientation capability.
+ * @type {boolean}
+ * @private
+ */
+ this.hasOrientationCapability_ = hasOrientationCapability;
+
+ /**
+ * Whether the document should be printed in landscape by default.
+ * @type {boolean}
+ * @private
+ */
+ this.defaultIsLandscapeEnabled_ = defaultIsLandscapeEnabled;
+
+ /**
+ * Whether the print destination has color printing capability.
+ * @type {boolean}
+ * @private
+ */
+ this.hasColorCapability_ = hasColorCapability;
+
+ /**
+ * Whether the document should be printed in color.
+ * @type {boolean}
+ * @private
+ */
+ this.defaultIsColorEnabled_ = defaultIsColorEnabled;
+ };
+
+ ChromiumCapabilities.prototype = {
+ /** @return {boolean} Whether the destination has the copies capability. */
+ get hasCopiesCapability() {
+ return this.hasCopiesCapability_;
+ },
+
+ /** @return {string} Default number of copies in string format. */
+ get defaultCopiesStr() {
+ return this.defaultCopiesStr_;
+ },
+
+ /** @return {boolean} Whether the destination has collation capability. */
+ get hasCollateCapability() {
+ return this.hasCollateCapability_;
+ },
+
+ /** @return {boolean} Whether collation is enabled by default. */
+ get defaultIsCollateEnabled() {
+ return this.defaultIsCollateEnabled_;
+ },
+
+ /** @return {boolean} Whether the destination has the duplex capability. */
+ get hasDuplexCapability() {
+ return this.hasDuplexCapability_;
+ },
+
+ /** @return {boolean} Whether duplexing is enabled by default. */
+ get defaultIsDuplexEnabled() {
+ return this.defaultIsDuplexEnabled_;
+ },
+
+ /**
+ * @return {boolean} Whether the destination has the orientation capability.
+ */
+ get hasOrientationCapability() {
+ return this.hasOrientationCapability_;
+ },
+
+ /**
+ * @return {boolean} Whether document should be printed in landscape by
+ * default.
+ */
+ get defaultIsLandscapeEnabled() {
+ return this.defaultIsLandscapeEnabled_;
+ },
+
+ /**
+ * @return {boolean} Whether the destination has color printing capability.
+ */
+ get hasColorCapability() {
+ return this.hasColorCapability_;
+ },
+
+ /**
+ * @return {boolean} Whether document should be printed in color by default.
+ */
+ get defaultIsColorEnabled() {
+ return this.defaultIsColorEnabled_;
+ }
+ };
+
+ // Export
+ return {
+ ChromiumCapabilities: ChromiumCapabilities,
+ ChromiumPrintTicket: ChromiumPrintTicket
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698