| Index: remoting/webapp/crd/js/wcs_sandbox_container.js
|
| diff --git a/remoting/webapp/crd/js/wcs_sandbox_container.js b/remoting/webapp/crd/js/wcs_sandbox_container.js
|
| deleted file mode 100644
|
| index dd41e0e139038184a550df8619cbdb0df22b491b..0000000000000000000000000000000000000000
|
| --- a/remoting/webapp/crd/js/wcs_sandbox_container.js
|
| +++ /dev/null
|
| @@ -1,286 +0,0 @@
|
| -/* Copyright 2013 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
|
| - * The application side of the application/sandbox WCS interface, used by the
|
| - * application to exchange messages with the sandbox.
|
| - */
|
| -
|
| -'use strict';
|
| -
|
| -/** @suppress {duplicate} */
|
| -var remoting = remoting || {};
|
| -
|
| -/**
|
| - * @param {Window} sandbox The Javascript Window object representing the
|
| - * sandboxed WCS driver.
|
| - * @constructor
|
| - */
|
| -remoting.WcsSandboxContainer = function(sandbox) {
|
| - /** @private */
|
| - this.sandbox_ = sandbox;
|
| - /** @private {?function(string):void} */
|
| - this.onConnected_ = null;
|
| - /** @private {function(!remoting.Error):void} */
|
| - this.onError_ = function(error) {};
|
| - /** @private {?function(string):void} */
|
| - this.onIq_ = null;
|
| - /** @private {Object<number, XMLHttpRequest>} */
|
| - this.pendingXhrs_ = {};
|
| - /** @private */
|
| - this.localJid_ = '';
|
| -
|
| - /** @private */
|
| - this.accessTokenRefreshTimerStarted_ = false;
|
| -
|
| - window.addEventListener('message', this.onMessage_.bind(this), false);
|
| -
|
| - if (base.isAppsV2()) {
|
| - var message = {
|
| - 'command': 'proxyXhrs'
|
| - };
|
| - this.sandbox_.postMessage(message, '*');
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @param {function(string):void} onConnected Callback to be called when WCS is
|
| - * connected. May be called synchronously if WCS is already connected.
|
| - * @param {function(!remoting.Error):void} onError called in case of an error.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.connect = function(
|
| - onConnected, onError) {
|
| - this.onError_ = onError;
|
| - this.ensureAccessTokenRefreshTimer_();
|
| - if (this.localJid_) {
|
| - onConnected(this.localJid_);
|
| - } else {
|
| - this.onConnected_ = onConnected;
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @param {?function(string):void} onIq Callback invoked when an IQ stanza is
|
| - * received.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.setOnIq = function(onIq) {
|
| - this.onIq_ = onIq;
|
| -};
|
| -
|
| -/**
|
| - * Refreshes access token and starts a timer to update it periodically.
|
| - *
|
| - * @private
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.ensureAccessTokenRefreshTimer_ =
|
| - function() {
|
| - if (this.accessTokenRefreshTimerStarted_) {
|
| - return;
|
| - }
|
| -
|
| - this.refreshAccessToken_();
|
| - setInterval(this.refreshAccessToken_.bind(this), 60 * 1000);
|
| - this.accessTokenRefreshTimerStarted_ = true;
|
| -}
|
| -
|
| -/**
|
| - * @private
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.refreshAccessToken_ = function() {
|
| - remoting.identity.getToken().then(
|
| - this.setAccessToken_.bind(this),
|
| - remoting.Error.handler(this.onError_));
|
| -};
|
| -
|
| -/**
|
| - * @private
|
| - * @param {string} token The access token.
|
| - * @return {void}
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.setAccessToken_ = function(token) {
|
| - var message = {
|
| - 'command': 'setAccessToken',
|
| - 'token': token
|
| - };
|
| - this.sandbox_.postMessage(message, '*');
|
| -};
|
| -
|
| -/**
|
| - * @param {string} stanza The IQ stanza to send.
|
| - * @return {void}
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.sendIq = function(stanza) {
|
| - var message = {
|
| - 'command': 'sendIq',
|
| - 'stanza': stanza
|
| - };
|
| - this.sandbox_.postMessage(message, '*');
|
| -};
|
| -
|
| -/**
|
| - * Event handler to process messages from the sandbox.
|
| - *
|
| - * @param {Event} event
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.onMessage_ = function(event) {
|
| - switch (event.data['command']) {
|
| -
|
| - case 'onLocalJid':
|
| - /** @type {string} */
|
| - var localJid = event.data['localJid'];
|
| - if (localJid === undefined) {
|
| - console.error('onReady: missing localJid');
|
| - break;
|
| - }
|
| - this.localJid_ = localJid;
|
| - if (this.onConnected_) {
|
| - var callback = this.onConnected_;
|
| - this.onConnected_ = null;
|
| - callback(localJid);
|
| - }
|
| - break;
|
| -
|
| - case 'onError':
|
| - /** @type {!remoting.Error} */
|
| - var error = event.data['error'];
|
| - if (error === undefined) {
|
| - console.error('onError: missing error code');
|
| - break;
|
| - }
|
| - this.onError_(error);
|
| - break;
|
| -
|
| - case 'onIq':
|
| - /** @type {string} */
|
| - var stanza = event.data['stanza'];
|
| - if (stanza === undefined) {
|
| - console.error('onIq: missing IQ stanza');
|
| - break;
|
| - }
|
| - if (this.onIq_) {
|
| - this.onIq_(stanza);
|
| - }
|
| - break;
|
| -
|
| - case 'sendXhr':
|
| - /** @type {number} */
|
| - var id = event.data['id'];
|
| - if (id === undefined) {
|
| - console.error('sendXhr: missing id');
|
| - break;
|
| - }
|
| - /** @type {Object} */
|
| - var parameters = event.data['parameters'];
|
| - if (parameters === undefined) {
|
| - console.error('sendXhr: missing parameters');
|
| - break;
|
| - }
|
| - /** @type {string} */
|
| - var method = parameters['method'];
|
| - if (method === undefined) {
|
| - console.error('sendXhr: missing method');
|
| - break;
|
| - }
|
| - /** @type {string} */
|
| - var url = parameters['url'];
|
| - if (url === undefined) {
|
| - console.error('sendXhr: missing url');
|
| - break;
|
| - }
|
| - /** @type {string} */
|
| - var data = parameters['data'];
|
| - if (data === undefined) {
|
| - console.error('sendXhr: missing data');
|
| - break;
|
| - }
|
| - /** @type {string|undefined}*/
|
| - var user = parameters['user'];
|
| - /** @type {string|undefined}*/
|
| - var password = parameters['password'];
|
| - var xhr = new XMLHttpRequest;
|
| - this.pendingXhrs_[id] = xhr;
|
| - xhr.open(method, url, true, user, password);
|
| - /** @type {Object} */
|
| - var headers = parameters['headers'];
|
| - if (headers) {
|
| - for (var header in headers) {
|
| - xhr.setRequestHeader(header, headers[header]);
|
| - }
|
| - }
|
| - xhr.onreadystatechange = this.onReadyStateChange_.bind(this, id);
|
| - xhr.send(data);
|
| - break;
|
| -
|
| - case 'abortXhr':
|
| - var id = event.data['id'];
|
| - if (id === undefined) {
|
| - console.error('abortXhr: missing id');
|
| - break;
|
| - }
|
| - var xhr = this.pendingXhrs_[id]
|
| - if (!xhr) {
|
| - // It's possible for an abort and a reply to cross each other on the
|
| - // IPC channel. In that case, we silently ignore the abort.
|
| - break;
|
| - }
|
| - xhr.abort();
|
| - break;
|
| -
|
| - default:
|
| - console.error('Unexpected message:', event.data['command'], event.data);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Return a "copy" of an XHR object suitable for postMessage. Specifically,
|
| - * remove all non-serializable members such as functions.
|
| - *
|
| - * @param {XMLHttpRequest} xhr The XHR to serialize.
|
| - * @return {Object} A serializable version of the input.
|
| - */
|
| -function sanitizeXhr_(xhr) {
|
| - /** @type {Object} */
|
| - var result = {
|
| - readyState: xhr.readyState,
|
| - response: xhr.response,
|
| - responseText: xhr.responseText,
|
| - responseType: xhr.responseType,
|
| - responseXML: xhr.responseXML,
|
| - status: xhr.status,
|
| - statusText: xhr.statusText,
|
| - withCredentials: xhr.withCredentials
|
| - };
|
| - return result;
|
| -}
|
| -
|
| -/**
|
| - * @param {number} id The unique ID of the XHR for which the state has changed.
|
| - * @private
|
| - */
|
| -remoting.WcsSandboxContainer.prototype.onReadyStateChange_ = function(id) {
|
| - var xhr = this.pendingXhrs_[id];
|
| - if (!xhr) {
|
| - // XHRs are only removed when they have completed, in which case no
|
| - // further callbacks should be received.
|
| - console.error('Unexpected callback for xhr', id);
|
| - return;
|
| - }
|
| - var message = {
|
| - 'command': 'xhrStateChange',
|
| - 'id': id,
|
| - 'xhr': sanitizeXhr_(xhr)
|
| - };
|
| - this.sandbox_.postMessage(message, '*');
|
| - if (xhr.readyState == 4) {
|
| - delete this.pendingXhrs_[id];
|
| - }
|
| -}
|
| -
|
| -/** @type {remoting.WcsSandboxContainer} */
|
| -remoting.wcsSandbox = null;
|
|
|