| /* 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. |
| */ |
| |
| /** |
| * @fileoverview |
| * A class that provides an interface to a WCS connection. |
| */ |
| |
| 'use strict'; |
| |
| /** @suppress {duplicate} */ |
| var remoting = remoting || {}; |
| |
| /** @type {remoting.Wcs} */ |
| remoting.wcs = null; |
| |
| /** |
| * @constructor |
| * @param {remoting.WcsIqClient} wcsIqClient The WCS client. |
| * @param {string} token An OAuth2 access token. |
| * @param {function(string): void} onReady Called with the WCS client's JID. |
| */ |
| remoting.Wcs = function(wcsIqClient, token, onReady) { |
| /** |
| * The WCS client. |
| * @type {remoting.WcsIqClient} |
| * @private |
| */ |
| this.wcsIqClient_ = wcsIqClient; |
| |
| /** |
| * The OAuth2 access token. |
| * @type {string} |
| * @private |
| */ |
| this.token_ = token; |
| |
| /** |
| * The function called when the WCS client has received a full JID. |
| * @type {?function(string): void} |
| * @private |
| */ |
| this.onReady_ = onReady; |
| |
| /** |
| * The full JID of the WCS client. |
| * @type {string} |
| * @private |
| */ |
| this.clientFullJid_ = ''; |
| |
| /** |
| * A function called when an IQ stanza is received. |
| * @param {string} stanza The IQ stanza. |
| * @private |
| */ |
| this.onIq_ = function(stanza) {}; |
| |
| // Handle messages from the WcsIqClient. |
| this.wcsIqClient_.setOnMessage(this.onMessage_.bind(this)); |
| |
| // Start the WcsIqClient. |
| this.wcsIqClient_.connectChannel(); |
| }; |
| |
| /** |
| * Passes an access token to the WcsIqClient, if the token has been updated. |
| * |
| * @param {string} tokenNew A (possibly updated) access token. |
| * @return {void} Nothing. |
| */ |
| remoting.Wcs.prototype.updateAccessToken = function(tokenNew) { |
| if (tokenNew != this.token_) { |
| this.token_ = tokenNew; |
| this.wcsIqClient_.updateAccessToken(this.token_); |
| } |
| }; |
| |
| /** |
| * Handles a message coming from the WcsIqClient. |
| * |
| * @param {Array.<string>} msg The message. |
| * @return {void} Nothing. |
| * @private |
| */ |
| remoting.Wcs.prototype.onMessage_ = function(msg) { |
| if (msg[0] == 'is') { |
| this.onIq_(msg[1]); |
| } else if (msg[0] == 'cfj') { |
| this.clientFullJid_ = msg[1]; |
| console.log('Received JID: ' + this.clientFullJid_); |
| if (this.onReady_) { |
| this.onReady_(this.clientFullJid_); |
| this.onReady_ = null; |
| } |
| } |
| }; |
| |
| /** |
| * Gets the full JID of the WCS client. |
| * |
| * @return {string} The full JID. |
| */ |
| remoting.Wcs.prototype.getJid = function() { |
| return this.clientFullJid_; |
| }; |
| |
| /** |
| * Sends an IQ stanza. |
| * |
| * @param {string} stanza An IQ stanza. |
| * @return {void} Nothing. |
| */ |
| remoting.Wcs.prototype.sendIq = function(stanza) { |
| this.wcsIqClient_.sendIq(stanza); |
| }; |
| |
| /** |
| * Sets the function called when an IQ stanza is received. |
| * |
| * @param {function(string): void} onIq The function called when an IQ stanza |
| * is received. |
| * @return {void} Nothing. |
| */ |
| remoting.Wcs.prototype.setOnIq = function(onIq) { |
| this.onIq_ = onIq; |
| }; |