Land Recent QUIC Changes.
[chromium-blink-merge.git] / remoting / webapp / wcs.js
blob3a6d1e37261aee9937cc7ad0bdb97e653769d5c1
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.
4  */
6 /**
7  * @fileoverview
8  * A class that provides an interface to a WCS connection.
9  */
11 'use strict';
13 /** @suppress {duplicate} */
14 var remoting = remoting || {};
16 /** @type {remoting.Wcs} */
17 remoting.wcs = null;
19 /**
20  * @constructor
21  * @param {remoting.WcsIqClient} wcsIqClient The WCS client.
22  * @param {string} token An OAuth2 access token.
23  * @param {function(string): void} onReady Called with the WCS client's JID.
24  */
25 remoting.Wcs = function(wcsIqClient, token, onReady) {
26   /**
27    * The WCS client.
28    * @type {remoting.WcsIqClient}
29    * @private
30    */
31   this.wcsIqClient_ = wcsIqClient;
33   /**
34    * The OAuth2 access token.
35    * @type {string}
36    * @private
37    */
38   this.token_ = token;
40   /**
41    * The function called when the WCS client has received a full JID.
42    * @type {?function(string): void}
43    * @private
44    */
45   this.onReady_ = onReady;
47   /**
48    * The full JID of the WCS client.
49    * @type {string}
50    * @private
51    */
52   this.clientFullJid_ = '';
54   /**
55    * A function called when an IQ stanza is received.
56    * @param {string} stanza The IQ stanza.
57    * @private
58    */
59   this.onIq_ = function(stanza) {};
61   // Handle messages from the WcsIqClient.
62   this.wcsIqClient_.setOnMessage(this.onMessage_.bind(this));
64   // Start the WcsIqClient.
65   this.wcsIqClient_.connectChannel();
68 /**
69  * Passes an access token to the WcsIqClient, if the token has been updated.
70  *
71  * @param {string} tokenNew A (possibly updated) access token.
72  * @return {void} Nothing.
73  */
74 remoting.Wcs.prototype.updateAccessToken = function(tokenNew) {
75   if (tokenNew != this.token_) {
76     this.token_ = tokenNew;
77     this.wcsIqClient_.updateAccessToken(this.token_);
78   }
81 /**
82  * Handles a message coming from the WcsIqClient.
83  *
84  * @param {Array.<string>} msg The message.
85  * @return {void} Nothing.
86  * @private
87  */
88 remoting.Wcs.prototype.onMessage_ = function(msg) {
89   if (msg[0] == 'is') {
90     this.onIq_(msg[1]);
91   } else if (msg[0] == 'cfj') {
92     this.clientFullJid_ = msg[1];
93     console.log('Received JID: ' + this.clientFullJid_);
94     if (this.onReady_) {
95       this.onReady_(this.clientFullJid_);
96       this.onReady_ = null;
97     }
98   }
102  * Gets the full JID of the WCS client.
104  * @return {string} The full JID.
105  */
106 remoting.Wcs.prototype.getJid = function() {
107   return this.clientFullJid_;
111  * Sends an IQ stanza.
113  * @param {string} stanza An IQ stanza.
114  * @return {void} Nothing.
115  */
116 remoting.Wcs.prototype.sendIq = function(stanza) {
117   this.wcsIqClient_.sendIq(stanza);
121  * Sets the function called when an IQ stanza is received.
123  * @param {function(string): void} onIq The function called when an IQ stanza
124  *     is received.
125  * @return {void} Nothing.
126  */
127 remoting.Wcs.prototype.setOnIq = function(onIq) {
128   this.onIq_ = onIq;