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

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

Issue 1176693002: Add more host-side connection state logging for IT2Me. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Log connection-canceled if the user cancels installation. Created 5 years, 6 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/host_screen.js
diff --git a/remoting/webapp/crd/js/host_screen.js b/remoting/webapp/crd/js/host_screen.js
index 784586321b1cc1fa1dfef398bf1ea439417c9dee..172a2d01df8db1c87b4f34b322d2fac15156faa8 100644
--- a/remoting/webapp/crd/js/host_screen.js
+++ b/remoting/webapp/crd/js/host_screen.js
@@ -24,12 +24,27 @@ var hostSession_ = null;
var lastShareWasCancelled_ = false;
/**
+ * @type {remoting.LogToServer} Logging instance for IT2Me host connection
+ * status.
+ */
+var it2meLogger = null;
+
+/**
* Start a host session. This is the main entry point for the host screen,
* called directly from the onclick action of a button on the home screen.
* It first verifies that the native host components are installed and asks
* to install them if necessary.
*/
remoting.tryShare = function() {
+ ensureIT2MeLogger_().then(tryShareWithLogger_);
+};
+
+function tryShareWithLogger_() {
+ it2meLogger.setSessionId();
Jamie 2015/06/10 00:38:29 This forces a fresh session id each time the user
+ it2meLogger.logClientSessionStateChange(
+ remoting.ClientSession.State.INITIALIZING,
+ remoting.Error.none());
+
/** @type {remoting.It2MeHostFacade} */
var hostFacade = new remoting.It2MeHostFacade();
@@ -51,21 +66,12 @@ remoting.tryShare = function() {
var hasHostDialog = (hostInstallDialog !== null); /** jscompile hack */
if (!hasHostDialog) {
hostInstallDialog = new remoting.HostInstallDialog();
- hostInstallDialog.show(tryInitializeFacade, onInstallError);
+ hostInstallDialog.show(tryInitializeFacade, showShareError_);
} else {
hostInstallDialog.tryAgain();
}
};
- /** @param {!remoting.Error} error */
- var onInstallError = function(error) {
- if (error.hasTag(remoting.Error.Tag.CANCELLED)) {
- remoting.setMode(remoting.AppMode.HOME);
- } else {
- showShareError_(error);
- }
- };
-
tryInitializeFacade();
};
@@ -74,9 +80,10 @@ remoting.tryShare = function() {
*/
remoting.startHostUsingFacade_ = function(hostFacade) {
console.log('Attempting to share...');
- remoting.identity.getToken().then(
- remoting.tryShareWithToken_.bind(null, hostFacade),
- remoting.Error.handler(remoting.showErrorMessage));
+ setHostVersion_()
+ .then(remoting.identity.getToken.bind(remoting.identity))
+ .then(remoting.tryShareWithToken_.bind(null, hostFacade),
+ remoting.Error.handler(showShareError_));
}
/**
@@ -89,6 +96,9 @@ remoting.tryShareWithToken_ = function(hostFacade, token) {
lastShareWasCancelled_ = false;
onNatTraversalPolicyChanged_(true); // Hide warning by default.
remoting.setMode(remoting.AppMode.HOST_WAITING_FOR_CODE);
+ it2meLogger.logClientSessionStateChange(
+ remoting.ClientSession.State.CONNECTING,
+ remoting.Error.none());
document.getElementById('cancel-share-button').disabled = false;
disableTimeoutCountdown_();
@@ -194,10 +204,21 @@ function logDebugInfo_(msg) {
* @return {void} Nothing.
*/
function showShareError_(error) {
- var errorDiv = document.getElementById('host-plugin-error');
- l10n.localizeElementFromTag(errorDiv, error.getTag());
- console.error('Sharing error: ' + error.toString());
- remoting.setMode(remoting.AppMode.HOST_SHARE_FAILED);
+ if (error.hasTag(remoting.Error.Tag.CANCELLED)) {
+ remoting.setMode(remoting.AppMode.HOME);
+ it2meLogger.logClientSessionStateChange(
+ remoting.ClientSession.State.CONNECTION_CANCELED,
+ remoting.Error.none());
+ } else {
+ var errorDiv = document.getElementById('host-plugin-error');
+ l10n.localizeElementFromTag(errorDiv, error.getTag());
+ console.error('Sharing error: ' + error.toString());
+ remoting.setMode(remoting.AppMode.HOST_SHARE_FAILED);
+ it2meLogger.logClientSessionStateChange(
+ remoting.ClientSession.State.FAILED,
+ error);
+ }
+
cleanUp();
}
@@ -230,6 +251,9 @@ remoting.cancelShare = function() {
remoting.lastShareWasCancelled = true;
try {
hostSession_.disconnect();
+ it2meLogger.logClientSessionStateChange(
+ remoting.ClientSession.State.CONNECTION_CANCELED,
+ remoting.Error.none());
} catch (/** @type {*} */ error) {
console.error('Error disconnecting: ' + error +
'. The host probably crashed.');
@@ -338,4 +362,46 @@ function onNatTraversalPolicyChanged_(enabled) {
}
}
+/**
+ * Create an IT2Me LogToServer instance if one does not already exist.
+ *
+ * @return {Promise} Promise that resolves when the host version (if available),
+ * has been set on the logger instance.
+ */
+function ensureIT2MeLogger_() {
+ if (it2meLogger) {
+ return Promise.resolve();
+ }
+
+ var xmppConnection = new remoting.XmppConnection();
+ var tokenPromise = remoting.identity.getToken();
+ var emailPromise = remoting.identity.getEmail();
+ tokenPromise.then(function(/** string */ token) {
+ emailPromise.then(function(/** string */ email) {
+ xmppConnection.connect(remoting.settings.XMPP_SERVER, email, token);
+ });
+ });
+
+ var bufferedSignalStrategy =
+ new remoting.BufferedSignalStrategy(xmppConnection);
+ it2meLogger = new remoting.LogToServer(bufferedSignalStrategy, true);
+ it2meLogger.setLogEntryMode(remoting.ServerLogEntry.VALUE_MODE_IT2ME);
+
+ return setHostVersion_();
+};
+
+/**
+ * @return {Promise} Promise that resolves when the host version (if available),
+ * has been set on the logger instance.
+ */
+function setHostVersion_() {
+ return remoting.hostController.getLocalHostVersion().then(
+ function(/** string */ version) {
+ it2meLogger.setHostVersion(version);
+ },
+ function() {
kelvinp 2015/06/10 18:00:45 use .catch for readability return remoting.hostCon
Jamie 2015/06/10 18:14:44 Done.
+ return Promise.resolve();
+ });
+};
+
})();

Powered by Google App Engine
This is Rietveld 408576698