| Index: remoting/webapp/crd/js/fallback_signal_strategy.js
|
| diff --git a/remoting/webapp/crd/js/fallback_signal_strategy.js b/remoting/webapp/crd/js/fallback_signal_strategy.js
|
| deleted file mode 100644
|
| index a9d326dc208f10f0d47febd08c644172aadb310a..0000000000000000000000000000000000000000
|
| --- a/remoting/webapp/crd/js/fallback_signal_strategy.js
|
| +++ /dev/null
|
| @@ -1,357 +0,0 @@
|
| -// Copyright 2015 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.
|
| -
|
| -'use strict';
|
| -
|
| -/** @suppress {duplicate} */
|
| -var remoting = remoting || {};
|
| -
|
| -/**
|
| - * A signal strategy encapsulating a primary and a back-up strategy. If the
|
| - * primary fails or times out, then the secondary is used. Information about
|
| - * which strategy was used, and why, is returned via |onProgressCallback|.
|
| - *
|
| - * @param {remoting.SignalStrategy} primary
|
| - * @param {remoting.SignalStrategy} secondary
|
| - *
|
| - * @implements {remoting.SignalStrategy}
|
| - * @constructor
|
| - */
|
| -remoting.FallbackSignalStrategy = function(primary,
|
| - secondary) {
|
| - /** @private {remoting.SignalStrategy} */
|
| - this.primary_ = primary;
|
| - this.primary_.setStateChangedCallback(this.onPrimaryStateChanged_.bind(this));
|
| -
|
| - /** @private {remoting.SignalStrategy} */
|
| - this.secondary_ = secondary;
|
| - this.secondary_.setStateChangedCallback(
|
| - this.onSecondaryStateChanged_.bind(this));
|
| -
|
| - /** @private {?function(remoting.SignalStrategy.State)} */
|
| - this.onStateChangedCallback_ = null;
|
| -
|
| - /** @private {?function(Element):void} */
|
| - this.onIncomingStanzaCallback_ = null;
|
| -
|
| - /**
|
| - * @private {number}
|
| - * @const
|
| - */
|
| - this.PRIMARY_CONNECT_TIMEOUT_MS_ = 10 * 1000;
|
| -
|
| - /**
|
| - * @enum {string}
|
| - * @private
|
| - */
|
| - this.State = {
|
| - NOT_CONNECTED: 'not-connected',
|
| - PRIMARY_PENDING: 'primary-pending',
|
| - PRIMARY_SUCCEEDED: 'primary-succeeded',
|
| - SECONDARY_PENDING: 'secondary-pending',
|
| - SECONDARY_SUCCEEDED: 'secondary-succeeded',
|
| - SECONDARY_FAILED: 'secondary-failed',
|
| - CLOSED: 'closed'
|
| - };
|
| -
|
| - /** @private {string} */
|
| - this.state_ = this.State.NOT_CONNECTED;
|
| -
|
| - /** @private {?remoting.SignalStrategy.State} */
|
| - this.externalState_ = null;
|
| -
|
| - /** @private {string} */
|
| - this.server_ = '';
|
| -
|
| - /** @private {string} */
|
| - this.username_ = '';
|
| -
|
| - /** @private {string} */
|
| - this.authToken_ = '';
|
| -
|
| - /** @private {number} */
|
| - this.primaryConnectTimerId_ = 0;
|
| -
|
| - /** @private {remoting.LogToServer} */
|
| - this.logToServer_ = null;
|
| -
|
| - /**
|
| - * @type {Array<{strategyType: remoting.SignalStrategy.Type,
|
| - progress: remoting.FallbackSignalStrategy.Progress}>}
|
| - */
|
| - this.connectionSetupResults_ = [];
|
| -
|
| -};
|
| -
|
| -/**
|
| - * @enum {string}
|
| - */
|
| -remoting.FallbackSignalStrategy.Progress = {
|
| - SUCCEEDED: 'succeeded',
|
| - FAILED: 'failed',
|
| - TIMED_OUT: 'timed-out',
|
| - SUCCEEDED_LATE: 'succeeded-late',
|
| - FAILED_LATE: 'failed-late',
|
| -};
|
| -
|
| -remoting.FallbackSignalStrategy.prototype.dispose = function() {
|
| - this.primary_.dispose();
|
| - this.secondary_.dispose();
|
| -};
|
| -
|
| -/**
|
| - * @param {function(remoting.SignalStrategy.State):void} onStateChangedCallback
|
| - * Callback to call on state change.
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.setStateChangedCallback = function(
|
| - onStateChangedCallback) {
|
| - this.onStateChangedCallback_ = onStateChangedCallback;
|
| -};
|
| -
|
| -/**
|
| - * @param {?function(Element):void} onIncomingStanzaCallback Callback to call on
|
| - * incoming messages.
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.setIncomingStanzaCallback =
|
| - function(onIncomingStanzaCallback) {
|
| - this.onIncomingStanzaCallback_ = onIncomingStanzaCallback;
|
| - if (this.state_ == this.State.PRIMARY_PENDING ||
|
| - this.state_ == this.State.PRIMARY_SUCCEEDED) {
|
| - this.primary_.setIncomingStanzaCallback(onIncomingStanzaCallback);
|
| - } else if (this.state_ == this.State.SECONDARY_PENDING ||
|
| - this.state_ == this.State.SECONDARY_SUCCEEDED) {
|
| - this.secondary_.setIncomingStanzaCallback(onIncomingStanzaCallback);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @param {string} server
|
| - * @param {string} username
|
| - * @param {string} authToken
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.connect =
|
| - function(server, username, authToken) {
|
| - base.debug.assert(this.state_ == this.State.NOT_CONNECTED);
|
| - base.debug.assert(this.onStateChangedCallback_ != null);
|
| - this.server_ = server;
|
| - this.username_ = username;
|
| - this.authToken_ = authToken;
|
| - this.state_ = this.State.PRIMARY_PENDING;
|
| - this.primary_.setIncomingStanzaCallback(this.onIncomingStanzaCallback_);
|
| - this.primary_.connect(server, username, authToken);
|
| - this.primaryConnectTimerId_ =
|
| - window.setTimeout(this.onPrimaryTimeout_.bind(this),
|
| - this.PRIMARY_CONNECT_TIMEOUT_MS_);
|
| -};
|
| -
|
| -/**
|
| - * Sends a message. Can be called only in CONNECTED state.
|
| - * @param {string} message
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.sendMessage = function(message) {
|
| - this.getConnectedSignalStrategy_().sendMessage(message);
|
| -};
|
| -
|
| -/**
|
| - * Send any messages accumulated during connection set-up.
|
| - *
|
| - * @param {remoting.LogToServer} logToServer The LogToServer instance for the
|
| - * connection.
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.sendConnectionSetupResults =
|
| - function(logToServer) {
|
| - this.logToServer_ = logToServer;
|
| - this.sendConnectionSetupResultsInternal_();
|
| -}
|
| -
|
| -remoting.FallbackSignalStrategy.prototype.sendConnectionSetupResultsInternal_ =
|
| - function() {
|
| - for (var i = 0; i < this.connectionSetupResults_.length; ++i) {
|
| - var result = this.connectionSetupResults_[i];
|
| - this.logToServer_.logSignalStrategyProgress(result.strategyType,
|
| - result.progress);
|
| - }
|
| - this.connectionSetupResults_ = [];
|
| -};
|
| -
|
| -/** @return {remoting.SignalStrategy.State} Current state */
|
| -remoting.FallbackSignalStrategy.prototype.getState = function() {
|
| - return (this.externalState_ === null)
|
| - ? remoting.SignalStrategy.State.NOT_CONNECTED
|
| - : this.externalState_;
|
| -};
|
| -
|
| -/** @return {!remoting.Error} Error when in FAILED state. */
|
| -remoting.FallbackSignalStrategy.prototype.getError = function() {
|
| - base.debug.assert(this.state_ == this.State.SECONDARY_FAILED);
|
| - base.debug.assert(
|
| - this.secondary_.getState() == remoting.SignalStrategy.State.FAILED);
|
| - return this.secondary_.getError();
|
| -};
|
| -
|
| -/** @return {string} Current JID when in CONNECTED state. */
|
| -remoting.FallbackSignalStrategy.prototype.getJid = function() {
|
| - return this.getConnectedSignalStrategy_().getJid();
|
| -};
|
| -
|
| -/** @return {remoting.SignalStrategy.Type} The signal strategy type. */
|
| -remoting.FallbackSignalStrategy.prototype.getType = function() {
|
| - return this.getConnectedSignalStrategy_().getType();
|
| -};
|
| -
|
| -/**
|
| - * @return {remoting.SignalStrategy} The active signal strategy, if the
|
| - * connection has succeeded.
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.getConnectedSignalStrategy_ =
|
| - function() {
|
| - if (this.state_ == this.State.PRIMARY_SUCCEEDED) {
|
| - base.debug.assert(
|
| - this.primary_.getState() == remoting.SignalStrategy.State.CONNECTED);
|
| - return this.primary_;
|
| - } else if (this.state_ == this.State.SECONDARY_SUCCEEDED) {
|
| - base.debug.assert(
|
| - this.secondary_.getState() == remoting.SignalStrategy.State.CONNECTED);
|
| - return this.secondary_;
|
| - } else {
|
| - base.debug.assert(
|
| - false,
|
| - 'getConnectedSignalStrategy called in unconnected state');
|
| - return null;
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @param {remoting.SignalStrategy.State} state
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.onPrimaryStateChanged_ =
|
| - function(state) {
|
| - switch (state) {
|
| - case remoting.SignalStrategy.State.CONNECTED:
|
| - if (this.state_ == this.State.PRIMARY_PENDING) {
|
| - window.clearTimeout(this.primaryConnectTimerId_);
|
| - this.updateProgress_(
|
| - this.primary_,
|
| - remoting.FallbackSignalStrategy.Progress.SUCCEEDED);
|
| - this.state_ = this.State.PRIMARY_SUCCEEDED;
|
| - } else {
|
| - this.updateProgress_(
|
| - this.primary_,
|
| - remoting.FallbackSignalStrategy.Progress.SUCCEEDED_LATE);
|
| - }
|
| - break;
|
| -
|
| - case remoting.SignalStrategy.State.FAILED:
|
| - if (this.state_ == this.State.PRIMARY_PENDING) {
|
| - window.clearTimeout(this.primaryConnectTimerId_);
|
| - this.updateProgress_(
|
| - this.primary_,
|
| - remoting.FallbackSignalStrategy.Progress.FAILED);
|
| - this.connectSecondary_();
|
| - } else {
|
| - this.updateProgress_(
|
| - this.primary_,
|
| - remoting.FallbackSignalStrategy.Progress.FAILED_LATE);
|
| - }
|
| - return; // Don't notify the external callback
|
| -
|
| - case remoting.SignalStrategy.State.CLOSED:
|
| - this.state_ = this.State.CLOSED;
|
| - break;
|
| - }
|
| -
|
| - this.notifyExternalCallback_(state);
|
| -};
|
| -
|
| -/**
|
| - * @param {remoting.SignalStrategy.State} state
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.onSecondaryStateChanged_ =
|
| - function(state) {
|
| - switch (state) {
|
| - case remoting.SignalStrategy.State.CONNECTED:
|
| - this.updateProgress_(
|
| - this.secondary_,
|
| - remoting.FallbackSignalStrategy.Progress.SUCCEEDED);
|
| - this.state_ = this.State.SECONDARY_SUCCEEDED;
|
| - break;
|
| -
|
| - case remoting.SignalStrategy.State.FAILED:
|
| - this.updateProgress_(
|
| - this.secondary_,
|
| - remoting.FallbackSignalStrategy.Progress.FAILED);
|
| - this.state_ = this.State.SECONDARY_FAILED;
|
| - break;
|
| -
|
| - case remoting.SignalStrategy.State.CLOSED:
|
| - this.state_ = this.State.CLOSED;
|
| - break;
|
| - }
|
| -
|
| - this.notifyExternalCallback_(state);
|
| -};
|
| -
|
| -/**
|
| - * Notify the external callback of a change in state if it's consistent with
|
| - * the allowed state transitions (ie, if it represents a later stage in the
|
| - * connection process). Suppress state transitions that would violate this,
|
| - * for example a CONNECTING -> NOT_CONNECTED transition when we switch from
|
| - * the primary to the secondary signal strategy.
|
| - *
|
| - * @param {remoting.SignalStrategy.State} state
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.notifyExternalCallback_ =
|
| - function(state) {
|
| - if (this.externalState_ === null || state > this.externalState_) {
|
| - this.externalState_ = state;
|
| - this.onStateChangedCallback_(state);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.connectSecondary_ = function() {
|
| - base.debug.assert(this.state_ == this.State.PRIMARY_PENDING);
|
| - base.debug.assert(this.server_ != '');
|
| - base.debug.assert(this.username_ != '');
|
| - base.debug.assert(this.authToken_ != '');
|
| -
|
| - this.state_ = this.State.SECONDARY_PENDING;
|
| - this.primary_.setIncomingStanzaCallback(null);
|
| - this.secondary_.setIncomingStanzaCallback(this.onIncomingStanzaCallback_);
|
| - this.secondary_.connect(this.server_, this.username_, this.authToken_);
|
| -};
|
| -
|
| -/**
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.onPrimaryTimeout_ = function() {
|
| - this.updateProgress_(
|
| - this.primary_,
|
| - remoting.FallbackSignalStrategy.Progress.TIMED_OUT);
|
| - this.connectSecondary_();
|
| -};
|
| -
|
| -/**
|
| - * @param {remoting.SignalStrategy} strategy
|
| - * @param {remoting.FallbackSignalStrategy.Progress} progress
|
| - * @private
|
| - */
|
| -remoting.FallbackSignalStrategy.prototype.updateProgress_ = function(
|
| - strategy, progress) {
|
| - console.log('FallbackSignalStrategy progress: ' + strategy.getType() + ' ' +
|
| - progress);
|
| - this.connectionSetupResults_.push({
|
| - 'strategyType': strategy.getType(),
|
| - 'progress': progress
|
| - });
|
| - if (this.logToServer_) {
|
| - this.sendConnectionSetupResultsInternal_();
|
| - }
|
| -};
|
|
|