Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1093)

Unified Diff: remoting/webapp/crd/js/wcs_sandbox_container.js

Issue 1133913002: [Chromoting] Move shared webapp JS files from crd/js -> base/js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/webapp/crd/js/wcs_adapter.js ('k') | remoting/webapp/crd/js/xhr.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « remoting/webapp/crd/js/wcs_adapter.js ('k') | remoting/webapp/crd/js/xhr.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698