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

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

Issue 1049873007: Refactored HostDaemonFacade so that replies to requests are handled in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/webapp/crd/js/host_daemon_facade.js
diff --git a/remoting/webapp/crd/js/host_daemon_facade.js b/remoting/webapp/crd/js/host_daemon_facade.js
index 0596b5745cd4b62de6bef40758cc67c2eae90cc6..0f91e3a0abc5dfada9a5634f452a8dfbf9b9e917 100644
--- a/remoting/webapp/crd/js/host_daemon_facade.js
+++ b/remoting/webapp/crd/js/host_daemon_facade.js
@@ -84,12 +84,20 @@ remoting.HostDaemonFacade.prototype.initialize_ = function() {
* @private
*/
remoting.HostDaemonFacade.prototype.connectNative_ = function() {
+ var that = this;
try {
this.port_ = chrome.runtime.connectNative(
'com.google.chrome.remote_desktop');
this.port_.onMessage.addListener(this.onIncomingMessageCallback_);
this.port_.onDisconnect.addListener(this.onDisconnectCallback_);
- return this.postMessageInternal_({type: 'hello'});
+ return this.postMessageInternal_({type: 'hello'}).then(function(reply) {
+ that.version_ = base.getStringAttr(reply, 'version');
+ // Old versions of the native messaging host do not return this list.
+ // Those versions default to the empty list of supported features.
+ that.supportedFeatures_ =
+ base.getArrayAttr(reply, 'supportedFeatures', []);
+ return null;
kelvinp 2015/04/24 21:59:27 nit s/return null/return for consistency within th
+ });
} catch (/** @type {*} */ err) {
console.log('Native Messaging initialization failed: ', err);
throw remoting.Error.unexpected();
@@ -131,7 +139,7 @@ remoting.HostDaemonFacade.prototype.hasFeature = function(feature) {
* Initializes that the Daemon if necessary and posts the supplied message.
*
* @param {{type: string}} message The message to post.
- * @return {!Promise}
+ * @return {!Promise<!Object>}
* @private
*/
remoting.HostDaemonFacade.prototype.postMessage_ =
@@ -152,7 +160,7 @@ remoting.HostDaemonFacade.prototype.postMessage_ =
* any other fields set depending on the message type.
*
* @param {{type: string}} message The message to post.
- * @return {!Promise}
+ * @return {!Promise<!Object>}
* @private
*/
remoting.HostDaemonFacade.prototype.postMessageInternal_ = function(message) {
@@ -191,8 +199,7 @@ remoting.HostDaemonFacade.prototype.onIncomingMessage_ = function(message) {
if (type != reply.type) {
throw 'Expected reply type: ' + reply.type + ', got: ' + type;
}
-
- reply.deferred.resolve(this.handleIncomingMessage_(message));
+ reply.deferred.resolve(message);
} catch (/** @type {*} */ e) {
console.error('Error while processing native message', e);
reply.deferred.reject(remoting.Error.unexpected());
@@ -200,106 +207,6 @@ remoting.HostDaemonFacade.prototype.onIncomingMessage_ = function(message) {
};
/**
- * Handler for incoming Native Messages.
- *
- * TODO(jrw) Consider refactoring so each method handles its own
- * response, e.g.:
- *
- * remoting.HostDaemonFacade.prototype.generateKeyPair = function() {
- * this.postMessage_({type: 'generateKeyPair'}).then(function(message) {
- * return {
- * privateKey: base.getStringAttr(message, 'privateKey'),
- * publicKey: base.getStringAttr(message, 'publicKey')
- * }
- * });
- * };
- *
- * @param {Object} message The received message.
- * @return {*}
- * @private
- */
-remoting.HostDaemonFacade.prototype.handleIncomingMessage_ =
- function(message) {
- var type = base.getStringAttr(message, 'type');
-
- switch (type) {
- case 'helloResponse':
- this.version_ = base.getStringAttr(message, 'version');
- // Old versions of the native messaging host do not return this list.
- // Those versions default to the empty list of supported features.
- this.supportedFeatures_ =
- base.getArrayAttr(message, 'supportedFeatures', []);
- return null;
-
- case 'getHostNameResponse':
- return base.getStringAttr(message, 'hostname');
-
- case 'getPinHashResponse':
- return base.getStringAttr(message, 'hash');
-
- case 'generateKeyPairResponse':
- return {
- privateKey: base.getStringAttr(message, 'privateKey'),
- publicKey: base.getStringAttr(message, 'publicKey')
- };
-
- case 'updateDaemonConfigResponse':
- return remoting.HostController.AsyncResult.fromString(
- base.getStringAttr(message, 'result'));
-
- case 'getDaemonConfigResponse':
- return base.getObjectAttr(message, 'config');
-
- case 'getUsageStatsConsentResponse':
- return {
- supported: base.getBooleanAttr(message, 'supported'),
- allowed: base.getBooleanAttr(message, 'allowed'),
- setByPolicy: base.getBooleanAttr(message, 'setByPolicy')
- };
-
- case 'startDaemonResponse':
- case 'stopDaemonResponse':
- return remoting.HostController.AsyncResult.fromString(
- base.getStringAttr(message, 'result'));
-
- case 'getDaemonStateResponse':
- return remoting.HostController.State.fromString(
- base.getStringAttr(message, 'state'));
-
- case 'getPairedClientsResponse':
- var pairedClients = remoting.PairedClient.convertToPairedClientArray(
- message['pairedClients']);
- if (pairedClients != null) {
- return pairedClients;
- } else {
- throw 'No paired clients!';
- }
-
- case 'clearPairedClientsResponse':
- case 'deletePairedClientResponse':
- return base.getBooleanAttr(message, 'result');
-
- case 'getHostClientIdResponse':
- return base.getStringAttr(message, 'clientId');
-
- case 'getCredentialsFromAuthCodeResponse':
- var userEmail = base.getStringAttr(message, 'userEmail');
- var refreshToken = base.getStringAttr(message, 'refreshToken');
- if (userEmail && refreshToken) {
- return {
- userEmail: userEmail,
- refreshToken: refreshToken
- };
- } else {
- throw 'Missing userEmail or refreshToken';
- }
-
- default:
- throw 'Unexpected native message: ' + message;
- }
-};
-
-/**
* @return {void} Nothing.
* @private
*/
@@ -331,7 +238,9 @@ remoting.HostDaemonFacade.prototype.onDisconnect_ = function() {
* @return {!Promise<string>}
*/
remoting.HostDaemonFacade.prototype.getHostName = function() {
- return this.postMessage_({type: 'getHostName'});
+ return this.postMessage_({type: 'getHostName'}).then(function(reply) {
+ return base.getStringAttr(reply, 'hostname');
+ });
};
/**
@@ -347,6 +256,8 @@ remoting.HostDaemonFacade.prototype.getPinHash = function(hostId, pin) {
type: 'getPinHash',
hostId: hostId,
pin: pin
+ }).then(function(reply) {
+ return base.getStringAttr(reply, 'hash');
});
};
@@ -358,7 +269,12 @@ remoting.HostDaemonFacade.prototype.getPinHash = function(hostId, pin) {
* @return {!Promise<remoting.KeyPair>}
*/
remoting.HostDaemonFacade.prototype.generateKeyPair = function() {
- return this.postMessage_({type: 'generateKeyPair'});
+ return this.postMessage_({type: 'generateKeyPair'}).then(function(reply) {
+ return {
+ privateKey: base.getStringAttr(reply, 'privateKey'),
+ publicKey: base.getStringAttr(reply, 'publicKey')
+ };
+ });
};
/**
@@ -378,6 +294,9 @@ remoting.HostDaemonFacade.prototype.updateDaemonConfig = function(config) {
return this.postMessage_({
type: 'updateDaemonConfig',
config: config
+ }).then(function(reply) {
+ return remoting.HostController.AsyncResult.fromString(
+ base.getStringAttr(reply, 'result'));
});
};
@@ -387,7 +306,9 @@ remoting.HostDaemonFacade.prototype.updateDaemonConfig = function(config) {
* @return {!Promise<Object>}
*/
remoting.HostDaemonFacade.prototype.getDaemonConfig = function() {
- return this.postMessage_({type: 'getDaemonConfig'});
+ return this.postMessage_({type: 'getDaemonConfig'}).then(function(reply) {
+ return base.getObjectAttr(reply, 'config');
+ });
};
/**
@@ -413,7 +334,14 @@ remoting.HostDaemonFacade.prototype.getDaemonVersion = function() {
* @return {!Promise<remoting.UsageStatsConsent>}
*/
remoting.HostDaemonFacade.prototype.getUsageStatsConsent = function() {
- return this.postMessage_({type: 'getUsageStatsConsent'});
+ return this.postMessage_({type: 'getUsageStatsConsent'}).
+ then(function(reply) {
+ return {
+ supported: base.getBooleanAttr(reply, 'supported'),
+ allowed: base.getBooleanAttr(reply, 'allowed'),
+ setByPolicy: base.getBooleanAttr(reply, 'setByPolicy')
+ };
+ });
};
/**
@@ -430,6 +358,9 @@ remoting.HostDaemonFacade.prototype.startDaemon = function(config, consent) {
type: 'startDaemon',
config: config,
consent: consent
+ }).then(function(reply) {
+ return remoting.HostController.AsyncResult.fromString(
+ base.getStringAttr(reply, 'result'));
});
};
@@ -442,7 +373,10 @@ remoting.HostDaemonFacade.prototype.startDaemon = function(config, consent) {
*/
remoting.HostDaemonFacade.prototype.stopDaemon =
function() {
- return this.postMessage_({type: 'stopDaemon'});
+ return this.postMessage_({type: 'stopDaemon'}).then(function(reply) {
+ return remoting.HostController.AsyncResult.fromString(
+ base.getStringAttr(reply, 'result'));
+ });
};
/**
@@ -451,7 +385,10 @@ remoting.HostDaemonFacade.prototype.stopDaemon =
* @return {!Promise<remoting.HostController.State>}
*/
remoting.HostDaemonFacade.prototype.getDaemonState = function() {
- return this.postMessage_({type: 'getDaemonState'});
+ return this.postMessage_({type: 'getDaemonState'}).then(function(reply) {
+ return remoting.HostController.State.fromString(
+ base.getStringAttr(reply, 'state'));
+ });
};
/**
@@ -460,7 +397,15 @@ remoting.HostDaemonFacade.prototype.getDaemonState = function() {
* @return {!Promise<Array<remoting.PairedClient>>}
*/
remoting.HostDaemonFacade.prototype.getPairedClients = function() {
- return this.postMessage_({type: 'getPairedClients'});
+ return this.postMessage_({type: 'getPairedClients'}).then(function(reply) {
+ var pairedClients = remoting.PairedClient.convertToPairedClientArray(
kelvinp 2015/04/24 21:59:27 Indent should be 2 spaces instead of 4
+ reply['pairedClients']);
+ if (pairedClients != null) {
+ return pairedClients;
+ } else {
+ throw remoting.Error.unexpected('No paired clients!');
+ }
+ });
};
/**
@@ -469,7 +414,9 @@ remoting.HostDaemonFacade.prototype.getPairedClients = function() {
* @return {!Promise<boolean>}
*/
remoting.HostDaemonFacade.prototype.clearPairedClients = function() {
- return this.postMessage_({type: 'clearPairedClients'});
+ return this.postMessage_({type: 'clearPairedClients'}).then(function(reply) {
+ return base.getBooleanAttr(reply, 'result');
+ });
};
/**
@@ -482,6 +429,8 @@ remoting.HostDaemonFacade.prototype.deletePairedClient = function(client) {
return this.postMessage_({
type: 'deletePairedClient',
clientId: client
+ }).then(function(reply) {
+ return base.getBooleanAttr(reply, 'result');
});
};
@@ -491,7 +440,9 @@ remoting.HostDaemonFacade.prototype.deletePairedClient = function(client) {
* @return {!Promise<string>}
*/
remoting.HostDaemonFacade.prototype.getHostClientId = function() {
- return this.postMessage_({type: 'getHostClientId'});
+ return this.postMessage_({type: 'getHostClientId'}).then(function(reply) {
+ return base.getStringAttr(reply, 'clientId');
+ });
};
/**
@@ -504,5 +455,16 @@ remoting.HostDaemonFacade.prototype.getCredentialsFromAuthCode =
return this.postMessage_({
type: 'getCredentialsFromAuthCode',
authorizationCode: authorizationCode
+ }).then(function(reply) {
+ var userEmail = base.getStringAttr(reply, 'userEmail');
+ var refreshToken = base.getStringAttr(reply, 'refreshToken');
+ if (userEmail && refreshToken) {
+ return {
+ userEmail: userEmail,
+ refreshToken: refreshToken
+ };
+ } else {
+ throw remoting.Error.unexpected('Missing userEmail or refreshToken');
+ }
});
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698