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

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

Issue 10450022: Print Preview Print Destination Search Widget (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Set --bary flag Created 8 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/cloud_parsers.js
diff --git a/chrome/browser/resources/print_preview/data/cloud_parsers.js b/chrome/browser/resources/print_preview/data/cloud_parsers.js
index 965e8812c5634b811bd46a9fbe94e15971481754..ed6cb1577d74603bf7517878066c21b45e881823 100644
--- a/chrome/browser/resources/print_preview/data/cloud_parsers.js
+++ b/chrome/browser/resources/print_preview/data/cloud_parsers.js
@@ -18,37 +18,61 @@ cr.define('cloudprint', function() {
DISPLAY_NAME: 'displayName',
FORMAT: 'capsFormat',
ID: 'id',
- TAGS: 'tags'
+ TAGS: 'tags',
+ TYPE: 'type'
};
/**
* Special tag that denotes whether the destination has been recently used.
* @type {string}
+ * @const
* @private
*/
CloudDestinationParser.RECENT_TAG_ = '^recent';
/**
+ * Special tag that denotes whether the destination is owned by the user.
+ * @type {string}
+ * @const
+ * @private
+ */
+ CloudDestinationParser.OWNED_TAG_ = '^own';
+
+ /**
+ * Enumeration of cloud destination types that are supported by print preview.
+ * @enum {string}
+ * @private
+ */
+ CloudDestinationParser.CloudType_ = {
+ ANDROID: 'ANDROID_CHROME_SNAPSHOT',
+ DOCS: 'DOCS',
+ IOS: 'IOS_CHROME_SNAPSHOT'
+ };
+
+ /**
* Parses a destination from JSON from a Google Cloud Print search or printer
* response.
- * @param {object} json Object that represents a Google Cloud Print search or
+ * @param {!Object} json Object that represents a Google Cloud Print search or
* printer response.
* @return {!print_preview.Destination} Parsed destination.
*/
CloudDestinationParser.parse = function(json) {
if (!json.hasOwnProperty(CloudDestinationParser.Field_.ID) ||
+ !json.hasOwnProperty(CloudDestinationParser.Field_.TYPE) ||
!json.hasOwnProperty(CloudDestinationParser.Field_.DISPLAY_NAME)) {
throw Error('Cloud destination does not have an ID or a display name');
}
- var isRecent = arrayContains(
- json[CloudDestinationParser.Field_.TAGS] || [],
- CloudDestinationParser.RECENT_TAG_);
+ var tags = json[CloudDestinationParser.Field_.TAGS] || [];
+ var isRecent = arrayContains(tags, CloudDestinationParser.RECENT_TAG_);
+ var isOwned = arrayContains(tags, CloudDestinationParser.OWNED_TAG_);
var cloudDest = new print_preview.Destination(
json[CloudDestinationParser.Field_.ID],
+ CloudDestinationParser.parseType_(
+ json[CloudDestinationParser.Field_.TYPE]),
json[CloudDestinationParser.Field_.DISPLAY_NAME],
isRecent,
- false /*isLocal*/,
- json[CloudDestinationParser.Field_.TAGS] || []);
+ tags,
+ isOwned);
if (json.hasOwnProperty(CloudDestinationParser.Field_.CAPABILITIES) &&
json.hasOwnProperty(CloudDestinationParser.Field_.FORMAT)) {
cloudDest.capabilities = CloudCapabilitiesParser.parse(
@@ -59,6 +83,24 @@ cr.define('cloudprint', function() {
};
/**
+ * Parses the destination type.
+ * @param {string} typeStr Destination type given by the Google Cloud Print
+ * server.
+ * @return {!print_preview.Destination.Type} Destination type.
+ * @private
+ */
+ CloudDestinationParser.parseType_ = function(typeStr) {
+ if (typeStr == CloudDestinationParser.CloudType_.ANDROID ||
+ typeStr == CloudDestinationParser.CloudType_.IOS) {
+ return print_preview.Destination.Type.MOBILE;
+ } else if (typeStr == CloudDestinationParser.CloudType_.DOCS) {
+ return print_preview.Destination.Type.GOOGLE_PROMOTED;
Vitaly Pavlenko 2014/09/18 02:39:48 There's no such thing like print_preview.Destina
+ } else {
+ return print_preview.Destination.Type.GOOGLE;
+ }
+ };
+
+ /**
* Namespace which contains a method to parse a cloud destination's print
* capabilities.
*/
@@ -81,7 +123,7 @@ cr.define('cloudprint', function() {
* Parses print capabilities from an object in a given capabilities format.
* @param {print_preview.CloudCapabilities.Format} capsFormat Format of the
* printer capabilities.
- * @param {object} json Object representing the cloud capabilities.
+ * @param {!Array.<!Object>} json Object representing the cloud capabilities.
* @return {!print_preview.CloudCapabilities} Parsed print capabilities.
*/
CloudCapabilitiesParser.parse = function(capsFormat, json) {
@@ -89,7 +131,7 @@ cr.define('cloudprint', function() {
var duplexCapability = null;
var copiesCapability = null;
var collateCapability = null;
- for (var cap, i = 0; cap = json[i]; i++) {
+ json.forEach(function(cap) {
var capId = cap[CloudCapabilitiesParser.Field_.CAP_ID];
if (capId == print_preview.CollateCapability.Id[capsFormat]) {
collateCapability = CloudCapabilitiesParser.parseCollate(capId, cap);
@@ -100,7 +142,7 @@ cr.define('cloudprint', function() {
} else if (capId == print_preview.DuplexCapability.Id[capsFormat]) {
duplexCapability = CloudCapabilitiesParser.parseDuplex(capId, cap);
}
- }
+ });
return new print_preview.CloudCapabilities(
collateCapability, colorCapability, copiesCapability, duplexCapability);
};
@@ -108,7 +150,7 @@ cr.define('cloudprint', function() {
/**
* Parses a collate capability from the given object.
* @param {string} capId Native ID of the given capability object.
- * @param {object} Object that represents the collate capability.
+ * @param {!Object} Object that represents the collate capability.
* @return {print_preview.CollateCapability} Parsed collate capability or
* {@code null} if the given capability object was not a valid collate
* capability.
@@ -118,7 +160,7 @@ cr.define('cloudprint', function() {
var collateOption = null;
var noCollateOption = null;
var isCollateDefault = false;
- for (var option, i = 0; option = options[i]; i++) {
+ options.forEach(function(option) {
var optionId = option[CloudCapabilitiesParser.Field_.OPTION_ID];
if (!collateOption &&
print_preview.CollateCapability.COLLATE_REGEX.test(optionId)) {
@@ -128,7 +170,7 @@ cr.define('cloudprint', function() {
print_preview.CollateCapability.NO_COLLATE_REGEX.test(optionId)) {
noCollateOption = optionId;
}
- }
+ });
if (!collateOption || !noCollateOption) {
return null;
}
@@ -139,7 +181,7 @@ cr.define('cloudprint', function() {
/**
* Parses a color capability from the given object.
* @param {string} capId Native ID of the given capability object.
- * @param {object} Object that represents the color capability.
+ * @param {!Object} Object that represents the color capability.
* @return {print_preview.ColorCapability} Parsed color capability or
* {@code null} if the given capability object was not a valid color
* capability.
@@ -149,7 +191,7 @@ cr.define('cloudprint', function() {
var colorOption = null;
var bwOption = null;
var isColorDefault = false;
- for (var option, i = 0; option = options[i]; i++) {
+ options.forEach(function(option) {
var optionId = option[CloudCapabilitiesParser.Field_.OPTION_ID];
if (!colorOption &&
print_preview.ColorCapability.COLOR_REGEX.test(optionId)) {
@@ -159,7 +201,7 @@ cr.define('cloudprint', function() {
print_preview.ColorCapability.BW_REGEX.test(optionId)) {
bwOption = optionId;
}
- }
+ });
if (!colorOption || !bwOption) {
return null;
}
@@ -170,7 +212,7 @@ cr.define('cloudprint', function() {
/**
* Parses a duplex capability from the given object.
* @param {string} capId Native ID of the given capability object.
- * @param {object} Object that represents the duplex capability.
+ * @param {!Object} Object that represents the duplex capability.
* @return {print_preview.DuplexCapability} Parsed duplex capability or
* {@code null} if the given capability object was not a valid duplex
* capability.
@@ -180,7 +222,7 @@ cr.define('cloudprint', function() {
var simplexOption = null;
var longEdgeOption = null;
var isDuplexDefault = false;
- for (var option, i = 0; option = options[i]; i++) {
+ options.forEach(function(option) {
var optionId = option[CloudCapabilitiesParser.Field_.OPTION_ID];
if (!simplexOption &&
print_preview.DuplexCapability.SIMPLEX_REGEX.test(optionId)) {
@@ -190,7 +232,7 @@ cr.define('cloudprint', function() {
longEdgeOption = optionId;
isDuplexDefault = !!option[CloudCapabilitiesParser.Field_.DEFAULT];
}
- }
+ });
if (!simplexOption || !longEdgeOption) {
return null;
}

Powered by Google App Engine
This is Rietveld 408576698