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

Unified Diff: remoting/webapp/crd/js/fallback_signal_strategy.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
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_();
- }
-};
« no previous file with comments | « remoting/webapp/crd/js/error_unittest.js ('k') | remoting/webapp/crd/js/fallback_signal_strategy_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698