Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / resources / print_preview / data / user_info.js
blobbb2fc29c6115e1ed190773454893bd4f0f3ba913
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 cr.define('print_preview', function() {
6   'use strict';
8   /**
9    * Repository which stores information about the user. Events are dispatched
10    * when the information changes.
11    * @constructor
12    * @extends {cr.EventTarget}
13    */
14   function UserInfo() {
15     cr.EventTarget.call(this);
17     /**
18      * Tracker used to keep track of event listeners.
19      * @type {!EventTracker}
20      * @private
21      */
22     this.tracker_ = new EventTracker();
24     /**
25      * Email address of the logged in user or {@code null} if no user is logged
26      * in.
27      * @type {?string}
28      * @private
29      */
30     this.userEmail_ = null;
31   };
33   /**
34    * Enumeration of event types dispatched by the user info.
35    * @enum {string}
36    */
37   UserInfo.EventType = {
38     EMIAL_CHANGE: 'print_preview.UserInfo.EMAIL_CHANGE'
39   };
41   UserInfo.prototype = {
42     __proto__: cr.EventTarget.prototype,
44     /**
45      * @return {?string} Email address of the logged in user or {@code null} if
46      *     no user is logged.
47      */
48     getUserEmail: function() {
49       return this.userEmail_;
50     },
52     /**
53      * @param {!cloudprint.CloudPrintInterface} cloudPrintInterface Interface
54      *     to Google Cloud Print that the print preview uses.
55      */
56     setCloudPrintInterface: function(cloudPrintInterface) {
57       this.tracker_.add(
58           cloudPrintInterface,
59           cloudprint.CloudPrintInterface.EventType.SEARCH_DONE,
60           this.onCloudPrintSearchDone_.bind(this));
61     },
63     /** Removes all event listeners. */
64     removeEventListeners: function() {
65       this.tracker_.removeAll();
66     },
68     /**
69      * Called when a Google Cloud Print printer search completes. Updates user
70      * information.
71      * @type {Event} event Contains information about the logged in user.
72      * @private
73      */
74     onCloudPrintSearchDone_: function(event) {
75       if (event.origin == print_preview.Destination.Origin.COOKIES) {
76         this.userEmail_ = event.email;
77         cr.dispatchSimpleEvent(this, UserInfo.EventType.EMAIL_CHANGE);
78       }
79     }
80   };
82   return {
83     UserInfo: UserInfo
84   };
85 });