| // 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'; |
| |
| /** |
| * Repository which stores information about the user. Events are dispatched |
| * when the information changes. |
| * @constructor |
| * @extends {cr.EventTarget} |
| */ |
| function UserInfo() { |
| cr.EventTarget.call(this); |
| |
| /** |
| * Tracker used to keep track of event listeners. |
| * @type {!EventTracker} |
| * @private |
| */ |
| this.tracker_ = new EventTracker(); |
| |
| /** |
| * Email address of the logged in user or {@code null} if no user is logged |
| * in. |
| * @type {?string} |
| * @private |
| */ |
| this.userEmail_ = null; |
| }; |
| |
| /** |
| * Enumeration of event types dispatched by the user info. |
| * @enum {string} |
| */ |
| UserInfo.EventType = { |
| EMIAL_CHANGE: 'print_preview.UserInfo.EMAIL_CHANGE' |
| }; |
| |
| UserInfo.prototype = { |
| __proto__: cr.EventTarget.prototype, |
| |
| /** |
| * @return {?string} Email address of the logged in user or {@code null} if |
| * no user is logged. |
| */ |
| getUserEmail: function() { |
| return this.userEmail_; |
| }, |
| |
| /** |
| * @param {!cloudprint.CloudPrintInterface} cloudPrintInterface Interface |
| * to Google Cloud Print that the print preview uses. |
| */ |
| setCloudPrintInterface: function(cloudPrintInterface) { |
| this.tracker_.add( |
| cloudPrintInterface, |
| cloudprint.CloudPrintInterface.EventType.SEARCH_DONE, |
| this.onCloudPrintSearchDone_.bind(this)); |
| }, |
| |
| /** Removes all event listeners. */ |
| removeEventListeners: function() { |
| this.tracker_.removeAll(); |
| }, |
| |
| /** |
| * Called when a Google Cloud Print printer search completes. Updates user |
| * information. |
| * @type {Event} event Contains information about the logged in user. |
| * @private |
| */ |
| onCloudPrintSearchDone_: function(event) { |
| if (event.origin == print_preview.Destination.Origin.COOKIES) { |
| this.userEmail_ = event.email; |
| cr.dispatchSimpleEvent(this, UserInfo.EventType.EMAIL_CHANGE); |
| } |
| } |
| }; |
| |
| return { |
| UserInfo: UserInfo |
| }; |
| }); |