Chromium Code Reviews| Index: remoting/webapp/client_session.js |
| diff --git a/remoting/webapp/client_session.js b/remoting/webapp/client_session.js |
| index 3579b0d55327a22961752911e0d5bd42deeaa83d..400ae35e248a826948a8568e242dc051e171a90c 100644 |
| --- a/remoting/webapp/client_session.js |
| +++ b/remoting/webapp/client_session.js |
| @@ -166,6 +166,9 @@ remoting.ClientSession = function(container, hostDisplayName, accessCode, |
| /** @type {remoting.GnubbyAuthHandler} @private */ |
| this.gnubbyAuthHandler_ = null; |
| + /** @type {remoting.CastExtensionHandler} @private */ |
| + this.castExtensionHandler_ = null; |
| + |
| if (this.mode_ == remoting.ClientSession.Mode.IT2ME) { |
| // Resize-to-client is not supported for IT2Me hosts. |
| this.resizeToClientButton_.hidden = true; |
| @@ -373,7 +376,8 @@ remoting.ClientSession.Capability = { |
| // this.plugin_.notifyClientResolution(). |
| SEND_INITIAL_RESOLUTION: 'sendInitialResolution', |
| RATE_LIMIT_RESIZE_REQUESTS: 'rateLimitResizeRequests', |
| - VIDEO_RECORDER: 'videoRecorder' |
| + VIDEO_RECORDER: 'videoRecorder', |
| + CAST: 'casting' |
|
Jamie
2014/08/13 23:21:04
I think I would call this capability chromeCast (a
aiguha
2014/08/15 07:09:56
All the Cast docs avoid using Chromecast, because
Jamie
2014/08/15 18:45:43
How about GOOGLE_CAST, since that's the name of th
|
| }; |
| /** |
| @@ -587,6 +591,8 @@ remoting.ClientSession.prototype.onPluginInitialized_ = function(initialized) { |
| this.plugin_.onSetCapabilitiesHandler = this.onSetCapabilities_.bind(this); |
| this.plugin_.onGnubbyAuthHandler = this.processGnubbyAuthMessage_.bind(this); |
| this.plugin_.updateMouseCursorImage = this.updateMouseCursorImage_.bind(this); |
| + this.plugin_.onCastExtensionHandler = |
| + this.processCastExtensionMessage_.bind(this); |
| this.initiateConnection_(); |
| }; |
| @@ -1109,6 +1115,7 @@ remoting.ClientSession.prototype.setState_ = function(newState) { |
| this.logToServer.logClientSessionStateChange(state, this.error_, this.mode_); |
| if (this.state_ == remoting.ClientSession.State.CONNECTED) { |
| this.createGnubbyAuthHandler_(); |
| + this.createCastExtensionHandler_(); |
| } |
| this.raiseEvent(remoting.ClientSession.Events.stateChanged, |
| @@ -1578,3 +1585,36 @@ remoting.ClientSession.prototype.getPluginPositionForTesting = function() { |
| left: parseFloat(style.marginLeft) |
| }; |
| }; |
| + |
| +/** |
| + * Send a cast extension message to the host. |
| + * @param {Object} data The cast message data. |
| + */ |
| +remoting.ClientSession.prototype.sendCastExtensionMessage = function(data) { |
| + if (!this.plugin_) |
| + return; |
|
Jamie
2014/08/13 23:21:04
Braces for single-line conditionals, for consisten
aiguha
2014/08/15 07:09:56
sendClipboardItem and sendGnubbbyAuthMessage don't
Jamie
2014/08/15 18:45:43
I didn't realize they weren't consistent. Since th
|
| + this.plugin_.sendClientMessage('cast_message', JSON.stringify(data)); |
| +}; |
| + |
| +/** |
| + * Process a remote cast extension message from the host. |
|
Jamie
2014/08/13 23:21:04
s/cast/Cast/, here and below
aiguha
2014/08/15 07:09:56
Done.
|
| + * @param {string} data Remote cast extension data message. |
| + * @private |
| + */ |
| +remoting.ClientSession.prototype.processCastExtensionMessage_ = function(data) { |
| + if (this.castExtensionHandler_) { |
| + this.castExtensionHandler_.onMessage(data); |
| + } |
| +}; |
| + |
| +/** |
| + * Create a cast extension handler and inform the host that cast extension |
| + * is supported. |
| + * @private |
| + */ |
| +remoting.ClientSession.prototype.createCastExtensionHandler_ = function() { |
| + if(this.mode_ == remoting.ClientSession.Mode.ME2ME) { |
|
Jamie
2014/08/13 23:21:04
Why is this restricted to Me2Me?
Jamie
2014/08/13 23:21:04
Nit: Space after 'if'
aiguha
2014/08/15 07:09:56
Done.
aiguha
2014/08/15 07:09:56
Only the remoting_me2me_host target supports the C
Jamie
2014/08/15 18:45:43
I didn't realize that. I think it's correct in tha
|
| + this.castExtensionHandler_ = new remoting.CastExtensionHandler(this); |
| + } |
| +}; |
| + |