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

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

Issue 587013003: Add Print Preview UI to accept and reject printer sharing invitations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 8c015a2e2e78a15071b3e471aec4c5e264fe084d..605ab462ca40734f0f9c5a7150a1782c1bedeacb 100644
--- a/chrome/browser/resources/print_preview/data/cloud_parsers.js
+++ b/chrome/browser/resources/print_preview/data/cloud_parsers.js
@@ -119,8 +119,76 @@ cr.define('cloudprint', function() {
}
};
+ /** Namespace which contains a method to parse printer sharing invitation. */
+ function InvitationParser() {};
+
+ /**
+ * Enumeration of invitation field names.
+ * @enum {string}
+ * @private
+ */
+ InvitationParser.Field_ = {
+ PRINTER: 'printer',
+ RECEIVER: 'receiver',
+ SENDER: 'sender'
+ };
+
+ /**
+ * Enumeration of cloud destination types that are supported by print preview.
+ * @enum {string}
+ * @private
+ */
+ InvitationParser.AclType_ = {
+ DOMAIN: 'DOMAIN',
+ GROUP: 'GROUP',
+ PUBLIC: 'PUBLIC',
+ USER: 'USER'
+ };
+
+ /**
+ * Parses printer sharing invitation from JSON from GCP invite API response.
+ * @param {!Object} json Object that represents a invitation search response.
+ * @param {string} account The account this invitation is sent for.
+ * @return {!print_preview.Invitation} Parsed invitation.
+ */
+ InvitationParser.parse = function(json, account) {
+ if (!json.hasOwnProperty(InvitationParser.Field_.SENDER) ||
+ !json.hasOwnProperty(InvitationParser.Field_.RECEIVER) ||
+ !json.hasOwnProperty(InvitationParser.Field_.PRINTER)) {
+ throw Error('Invitation does not have necessary info.');
+ }
+
+ var nameFormatter = function(name, scope) {
+ return name && scope ? (name + ' (' + scope + ')') : (name || scope);
+ };
+
+ var sender = json[InvitationParser.Field_.SENDER];
+ var senderName = nameFormatter(sender['name'], sender['email']);
+
+ var receiver = json[InvitationParser.Field_.RECEIVER];
+ var receiverName = '';
+ var receiverType = receiver['type'];
+ if (receiverType == InvitationParser.AclType_.USER) {
+ // It's a personal invitation, empty name indicates just that.
+ } else if (receiverType == InvitationParser.AclType_.GROUP ||
+ receiverType == InvitationParser.AclType_.DOMAIN) {
+ receiverName = nameFormatter(receiver['name'], receiver['scope']);
+ } else {
+ throw Error('Invitation of unsupported receiver type');
+ }
+
+ var destination = cloudprint.CloudDestinationParser.parse(
+ json[InvitationParser.Field_.PRINTER],
+ print_preview.Destination.Origin.COOKIES,
+ account);
+
+ return new print_preview.Invitation(
+ senderName, receiverName, destination, receiver, account);
+ };
+
// Export
return {
- CloudDestinationParser: CloudDestinationParser
+ CloudDestinationParser: CloudDestinationParser,
+ InvitationParser: InvitationParser
};
});

Powered by Google App Engine
This is Rietveld 408576698