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

Side by Side Diff: remoting/webapp/app_remoting/js/app_remoting.js

Issue 1015523005: [Webapp Refactor] Implements AppConnectedView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * This class implements the functionality that is specific to application 7 * This class implements the functionality that is specific to application
8 * remoting ("AppRemoting" or AR). 8 * remoting ("AppRemoting" or AR).
9 */ 9 */
10 10
(...skipping 13 matching lines...) Expand all
24 24
25 /** @private {remoting.ApplicationContextMenu} */ 25 /** @private {remoting.ApplicationContextMenu} */
26 this.contextMenu_ = null; 26 this.contextMenu_ = null;
27 27
28 /** @private {remoting.KeyboardLayoutsMenu} */ 28 /** @private {remoting.KeyboardLayoutsMenu} */
29 this.keyboardLayoutsMenu_ = null; 29 this.keyboardLayoutsMenu_ = null;
30 30
31 /** @private {remoting.WindowActivationMenu} */ 31 /** @private {remoting.WindowActivationMenu} */
32 this.windowActivationMenu_ = null; 32 this.windowActivationMenu_ = null;
33 33
34 /** @private {base.RepeatingTimer} */ 34 /** @private {remoting.AppConnectedView} */
35 this.pingTimer_ = null;
36
37 /** @private {remoting.DesktopConnectedView} */
38 this.connectedView_ = null; 35 this.connectedView_ = null;
39 }; 36 };
40 37
41 /** 38 /**
42 * Type definition for the RunApplicationResponse returned by the API. 39 * Type definition for the RunApplicationResponse returned by the API.
43 * 40 *
44 * @constructor 41 * @constructor
45 * @private 42 * @private
46 */ 43 */
47 remoting.AppRemoting.AppHostResponse = function() { 44 remoting.AppRemoting.AppHostResponse = function() {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 remoting.AppRemoting.prototype.handleConnected = function(connectionInfo) { 216 remoting.AppRemoting.prototype.handleConnected = function(connectionInfo) {
220 remoting.identity.getUserInfo().then( 217 remoting.identity.getUserInfo().then(
221 function(userInfo) { 218 function(userInfo) {
222 remoting.clientSession.sendClientMessage( 219 remoting.clientSession.sendClientMessage(
223 'setUserDisplayInfo', 220 'setUserDisplayInfo',
224 JSON.stringify({fullName: userInfo.name})); 221 JSON.stringify({fullName: userInfo.name}));
225 }); 222 });
226 223
227 remoting.app.getSessionConnector().registerProtocolExtension(this); 224 remoting.app.getSessionConnector().registerProtocolExtension(this);
228 225
229 var clientSession = connectionInfo.session(); 226 this.connectedView_ = new remoting.AppConnectedView(
230 // Set up a ping at 10-second intervals to test the connection speed.
231 var CONNECTION_SPEED_PING_INTERVAL = 10 * 1000;
232 this.pingTimer_ = new base.RepeatingTimer(function () {
233 var message = { timestamp: new Date().getTime() };
234 clientSession.sendClientMessage('pingRequest', JSON.stringify(message));
235 }, CONNECTION_SPEED_PING_INTERVAL);
236
237 // TODO(kelvinp): Move all app remoting specific logic into
238 // remoting.AppRemotingView.
239 this.connectedView_ = new remoting.DesktopConnectedView(
240 document.getElementById('client-container'), connectionInfo); 227 document.getElementById('client-container'), connectionInfo);
241 228
242 // Map Cmd to Ctrl on Mac since hosts typically use Ctrl for keyboard 229 // Map Cmd to Ctrl on Mac since hosts typically use Ctrl for keyboard
243 // shortcuts, but we want them to act as natively as possible. 230 // shortcuts, but we want them to act as natively as possible.
244 if (remoting.platformIsMac()) { 231 if (remoting.platformIsMac()) {
245 connectionInfo.plugin().setRemapKeys('0x0700e3>0x0700e0,0x0700e7>0x0700e4'); 232 connectionInfo.plugin().setRemapKeys('0x0700e3>0x0700e0,0x0700e7>0x0700e4');
246 } 233 }
247 }; 234 };
248 235
249 /** 236 /**
250 * Called when the current session has been disconnected. 237 * Called when the current session has been disconnected.
251 * 238 *
252 * @return {void} Nothing. 239 * @return {void} Nothing.
253 */ 240 */
254 remoting.AppRemoting.prototype.handleDisconnected = function() { 241 remoting.AppRemoting.prototype.handleDisconnected = function() {
255 // Cancel the ping when the connection closes.
256 base.dispose(this.pingTimer_);
257 this.pingTimer_ = null;
258
259 base.dispose(this.connectedView_); 242 base.dispose(this.connectedView_);
260 this.connectedView_ = null; 243 this.connectedView_ = null;
261 244
262 chrome.app.window.current().close(); 245 chrome.app.window.current().close();
263 }; 246 };
264 247
265 /** 248 /**
266 * Called when the current session's connection has failed. 249 * Called when the current session's connection has failed.
267 * 250 *
268 * @param {remoting.SessionConnector} connector 251 * @param {remoting.SessionConnector} connector
269 * @param {!remoting.Error} error 252 * @param {!remoting.Error} error
270 * @return {void} Nothing. 253 * @return {void} Nothing.
271 */ 254 */
272 remoting.AppRemoting.prototype.handleConnectionFailed = function( 255 remoting.AppRemoting.prototype.handleConnectionFailed = function(
273 connector, error) { 256 connector, error) {
274 this.handleError(error); 257 this.handleError(error);
275 }; 258 };
276 259
277 /**
278 * Called when the current session has reached the point where the host has
279 * started streaming video frames to the client.
280 *
281 * @return {void} Nothing.
282 */
283 remoting.AppRemoting.prototype.handleVideoStreamingStarted = function() {
284 remoting.LoadingWindow.close();
285 };
286
287
288 /** @return {Array<string>} */ 260 /** @return {Array<string>} */
289 remoting.AppRemoting.prototype.getExtensionTypes = function() { 261 remoting.AppRemoting.prototype.getExtensionTypes = function() {
290 return ['openURL', 'onWindowRemoved', 'onWindowAdded', 262 return ['openURL', 'onWindowRemoved', 'onWindowAdded',
291 'onAllWindowsMinimized', 'setKeyboardLayouts', 'pingResponse']; 263 'onAllWindowsMinimized', 'setKeyboardLayouts', 'pingResponse'];
292 }; 264 };
293 265
294 /** 266 /**
295 * @param {function(string,string)} sendMessageToHost Callback to send a message 267 * @param {function(string,string)} sendMessageToHost Callback to send a message
296 * to the host. 268 * to the host.
297 */ 269 */
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 chrome.i18n.getMessage(/*i18n-content*/'CONNECTION_FAILED'), 334 chrome.i18n.getMessage(/*i18n-content*/'CONNECTION_FAILED'),
363 chrome.i18n.getMessage(error.getTag())); 335 chrome.i18n.getMessage(error.getTag()));
364 }; 336 };
365 337
366 /** 338 /**
367 * Close the loading window before exiting. 339 * Close the loading window before exiting.
368 */ 340 */
369 remoting.AppRemoting.prototype.handleExit = function() { 341 remoting.AppRemoting.prototype.handleExit = function() {
370 remoting.LoadingWindow.close(); 342 remoting.LoadingWindow.close();
371 }; 343 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698