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

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

Issue 294923005: Add media size capability to PDF printer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/destination_store.js
diff --git a/chrome/browser/resources/print_preview/data/destination_store.js b/chrome/browser/resources/print_preview/data/destination_store.js
index 27769ccc3d99d47cb72ed58e9edec34801dac7f1..ca3d238e625f3cdc609e441e15b2453aab81fffa 100644
--- a/chrome/browser/resources/print_preview/data/destination_store.js
+++ b/chrome/browser/resources/print_preview/data/destination_store.js
@@ -48,6 +48,13 @@ cr.define('print_preview', function() {
this.metrics_ = metrics;
/**
+ * Cached local PDF printer capabilities.
+ * @type {Object}
+ * @private
+ */
+ this.pdfCapabilities_ = DestinationStore.createPdfCapabilities_();
+
+ /**
* Internal backing store for the data store.
* @type {!Array.<!print_preview.Destination>}
* @private
@@ -194,19 +201,14 @@ cr.define('print_preview', function() {
DestinationStore.PRIVET_SEARCH_DURATION_ = 2000;
/**
- * Creates a local PDF print destination.
- * @return {!print_preview.Destination} Created print destination.
+ * Creates capabilities for local PDF printer destination.
+ * @param {Object=} opt_capabilitiesTemplate Some of the capabilities to fill
+ * in the printer ones.
+ * @return {!Object} PDF printer capabilities.
* @private
*/
- DestinationStore.createLocalPdfPrintDestination_ = function() {
- var dest = new print_preview.Destination(
- print_preview.Destination.GooglePromotedId.SAVE_AS_PDF,
- print_preview.Destination.Type.LOCAL,
- print_preview.Destination.Origin.LOCAL,
- localStrings.getString('printToPDF'),
- false /*isRecent*/,
- print_preview.Destination.ConnectionStatus.ONLINE);
- dest.capabilities = {
+ DestinationStore.createPdfCapabilities_ = function(opt_capabilitiesTemplate) {
+ var capabilities = {
version: '1.0',
printer: {
page_orientation: {
@@ -219,7 +221,21 @@ cr.define('print_preview', function() {
color: { option: [{type: 'STANDARD_COLOR', is_default: true}] }
}
};
- return dest;
+ if (opt_capabilitiesTemplate) {
+ var mediaSize = opt_capabilitiesTemplate.printer.media_size;
+ var mediaDisplayNames = {
+ 'ISO_A4': 'A4',
+ 'ISO_A3': 'A3',
+ 'NA_LETTER': 'Letter',
+ 'NA_LEGAL': 'Legal',
+ 'NA_LEDGER': 'Tabloid'
+ };
+ for (var i = 0, media; media = mediaSize.option[i]; i++) {
+ media.custom_display_name = mediaDisplayNames[media.name] || media.name;
+ }
+ capabilities.printer.media_size = mediaSize;
+ }
+ return capabilities;
};
DestinationStore.prototype = {
@@ -631,6 +647,10 @@ cr.define('print_preview', function() {
addEventListeners_: function() {
this.tracker_.add(
this.nativeLayer_,
+ print_preview.NativeLayer.EventType.PDF_CAPABILITIES_READY,
+ this.onPdfCapabilitiesReady_.bind(this));
+ this.tracker_.add(
+ this.nativeLayer_,
print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET,
this.onLocalDestinationsSet_.bind(this));
this.tracker_.add(
@@ -656,6 +676,23 @@ cr.define('print_preview', function() {
},
/**
+ * Creates a local PDF print destination.
+ * @return {!print_preview.Destination} Created print destination.
+ * @private
+ */
+ createLocalPdfPrintDestination_: function() {
+ var destination = new print_preview.Destination(
+ print_preview.Destination.GooglePromotedId.SAVE_AS_PDF,
+ print_preview.Destination.Type.LOCAL,
+ print_preview.Destination.Origin.LOCAL,
+ localStrings.getString('printToPDF'),
+ false /*isRecent*/,
+ print_preview.Destination.ConnectionStatus.ONLINE);
+ destination.capabilities = this.pdfCapabilities_;
+ return destination;
+ },
+
+ /**
* Resets the state of the destination store to its initial state.
* @private
*/
@@ -665,8 +702,7 @@ cr.define('print_preview', function() {
this.selectDestination(null);
this.loadedCloudOrigins_ = {};
this.hasLoadedAllLocalDestinations_ = false;
- this.insertDestination_(
- DestinationStore.createLocalPdfPrintDestination_());
+ this.insertDestination_(this.createLocalPdfPrintDestination_());
this.resetAutoSelectTimeout_();
},
@@ -692,6 +728,23 @@ cr.define('print_preview', function() {
}
},
+ onPdfCapabilitiesReady_: function(event) {
+ this.pdfCapabilities_ =
+ DestinationStore.createPdfCapabilities_(event.capabilities);
+ if (this.destinations_[0] &&
Vitaly Buka (NO REVIEWS) 2014/05/20 22:52:19 Why do you need this if?
+ this.destinations_[0].id ==
+ print_preview.Destination.GooglePromotedId.SAVE_AS_PDF) {
+ var pdfDestination = this.destinations_[0];
+ pdfDestination.capabilities = this.pdfCapabilities_;
+ if (this.selectedDestination_ &&
+ this.selectedDestination_.id == pdfDestination.id) {
+ cr.dispatchSimpleEvent(this,
+ DestinationStore.EventType.
+ SELECTED_DESTINATION_CAPABILITIES_READY);
+ }
+ }
+ },
+
/**
* Called when the local destinations have been got from the native layer.
* @param {Event} Contains the local destinations.

Powered by Google App Engine
This is Rietveld 408576698