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

Side by Side Diff: remoting/webapp/crd/js/desktop_connected_view.js

Issue 952353002: Requiem for client_screen.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 * Class handling user-facing aspects of the client session. 7 * Class handling user-facing aspects of the client session.
8 */ 8 */
9 9
10 'use strict'; 10 'use strict';
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 /** @type {string} @private */ 54 /** @type {string} @private */
55 this.defaultRemapKeys_ = defaultRemapKeys; 55 this.defaultRemapKeys_ = defaultRemapKeys;
56 56
57 /** 57 /**
58 * Called when the UI is finished initializing. 58 * Called when the UI is finished initializing.
59 * @type {function(remoting.Error, remoting.ClientPlugin):void} 59 * @type {function(remoting.Error, remoting.ClientPlugin):void}
60 */ 60 */
61 this.onInitialized_ = onInitialized; 61 this.onInitialized_ = onInitialized;
62 62
63 /** @type {function(boolean=):void} @private */
64 this.callOnFullScreenChanged_ = this.onFullScreenChanged_.bind(this)
65
66 /** @private */ 63 /** @private */
67 this.callPluginLostFocus_ = this.pluginLostFocus_.bind(this); 64 this.callPluginLostFocus_ = this.pluginLostFocus_.bind(this);
68 /** @private */ 65 /** @private */
69 this.callPluginGotFocus_ = this.pluginGotFocus_.bind(this); 66 this.callPluginGotFocus_ = this.pluginGotFocus_.bind(this);
70 /** @type {Element} @private */ 67 /** @type {Element} @private */
71 this.debugRegionContainer_ = 68 this.debugRegionContainer_ =
72 this.container_.querySelector('.debug-region-container'); 69 this.container_.querySelector('.debug-region-container');
73 70
74 /** @type {Element} @private */ 71 /** @type {Element} @private */
75 this.mouseCursorOverlay_ = 72 this.mouseCursorOverlay_ =
76 this.container_.querySelector('.mouse-cursor-overlay'); 73 this.container_.querySelector('.mouse-cursor-overlay');
77 74
78 /** @private {remoting.DesktopViewport} */ 75 /** @private {remoting.DesktopViewport} */
79 this.viewport_ = null; 76 this.viewport_ = null;
80 77
81 /** @type {Element} */ 78 /** @type {Element} */
82 var img = this.mouseCursorOverlay_; 79 var img = this.mouseCursorOverlay_;
83 /** @param {Event} event @private */ 80 /** @param {Event} event @private */
84 this.updateMouseCursorPosition_ = function(event) { 81 this.updateMouseCursorPosition_ = function(event) {
85 img.style.top = event.offsetY + 'px'; 82 img.style.top = event.offsetY + 'px';
86 img.style.left = event.offsetX + 'px'; 83 img.style.left = event.offsetX + 'px';
87 }; 84 };
88 85
89 /** @type {remoting.VideoFrameRecorder} @private */ 86 /** @type {remoting.VideoFrameRecorder} @private */
90 this.videoFrameRecorder_ = null; 87 this.videoFrameRecorder_ = null;
88
89 /** private {base.Disposable} */
90 this.eventHooks_ = null;
91 }; 91 };
92 92
93 // The mode of this session. 93 // The mode of this session.
94 /** @enum {number} */ 94 /** @enum {number} */
95 remoting.DesktopConnectedView.Mode = { 95 remoting.DesktopConnectedView.Mode = {
96 IT2ME: 0, 96 IT2ME: 0,
97 ME2ME: 1, 97 ME2ME: 1,
98 APP_REMOTING: 2 98 APP_REMOTING: 2
99 }; 99 };
100 100
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 215
216 this.plugin_.setMouseCursorHandler(this.updateMouseCursorImage_.bind(this)); 216 this.plugin_.setMouseCursorHandler(this.updateMouseCursorImage_.bind(this));
217 217
218 this.onInitialized_(remoting.Error.NONE, this.plugin_); 218 this.onInitialized_(remoting.Error.NONE, this.plugin_);
219 }; 219 };
220 220
221 /** 221 /**
222 * This is a callback that gets called when the window is resized. 222 * This is a callback that gets called when the window is resized.
223 * 223 *
224 * @return {void} Nothing. 224 * @return {void} Nothing.
225 * @private.
225 */ 226 */
226 remoting.DesktopConnectedView.prototype.onResize = function() { 227 remoting.DesktopConnectedView.prototype.onResize_ = function() {
227 if (this.viewport_) { 228 if (this.viewport_) {
228 this.viewport_.onResize(); 229 this.viewport_.onResize();
229 } 230 }
230 }; 231 };
231 232
232 /** 233 /**
234 * Called when the app window is hidden.
235 * @return {void} Nothing.
236 */
237 remoting.DesktopConnectedView.prototype.onVisibilityChanged_ = function() {
238 this.pauseVideo(document.hidden);
239 };
240
241 /**
233 * Callback that the plugin invokes to indicate when the connection is 242 * Callback that the plugin invokes to indicate when the connection is
234 * ready. 243 * ready.
235 * 244 *
236 * @param {boolean} ready True if the connection is ready. 245 * @param {boolean} ready True if the connection is ready.
237 */ 246 */
238 remoting.DesktopConnectedView.prototype.onConnectionReady = function(ready) { 247 remoting.DesktopConnectedView.prototype.onConnectionReady = function(ready) {
239 if (!ready) { 248 if (!ready) {
240 this.container_.classList.add('session-client-inactive'); 249 this.container_.classList.add('session-client-inactive');
241 } else { 250 } else {
242 this.container_.classList.remove('session-client-inactive'); 251 this.container_.classList.remove('session-client-inactive');
(...skipping 19 matching lines...) Expand all
262 271
263 this.updateClientSessionUi_(null); 272 this.updateClientSessionUi_(null);
264 }; 273 };
265 274
266 /** 275 /**
267 * @param {remoting.ClientSession} clientSession The active session, or null if 276 * @param {remoting.ClientSession} clientSession The active session, or null if
268 * there is no connection. 277 * there is no connection.
269 */ 278 */
270 remoting.DesktopConnectedView.prototype.updateClientSessionUi_ = function( 279 remoting.DesktopConnectedView.prototype.updateClientSessionUi_ = function(
271 clientSession) { 280 clientSession) {
272 if (clientSession == null) { 281 if (clientSession === null) {
273 if (remoting.windowFrame) { 282 if (remoting.windowFrame) {
274 remoting.windowFrame.setDesktopConnectedView(null); 283 remoting.windowFrame.setDesktopConnectedView(null);
275 } 284 }
276 if (remoting.toolbar) { 285 if (remoting.toolbar) {
277 remoting.toolbar.setDesktopConnectedView(null); 286 remoting.toolbar.setDesktopConnectedView(null);
278 } 287 }
279 if (remoting.optionsMenu) { 288 if (remoting.optionsMenu) {
280 remoting.optionsMenu.setDesktopConnectedView(null); 289 remoting.optionsMenu.setDesktopConnectedView(null);
281 } 290 }
282 291
283 document.body.classList.remove('connected'); 292 document.body.classList.remove('connected');
284 this.container_.removeEventListener( 293 this.container_.removeEventListener(
285 'mousemove', this.updateMouseCursorPosition_, true); 294 'mousemove', this.updateMouseCursorPosition_, true);
286 // Stop listening for full-screen events. 295 base.dispose(this.eventHooks_);
287 remoting.fullscreen.removeListener(this.callOnFullScreenChanged_); 296 this.eventHooks_ = null;
288
289 base.dispose(this.viewport_); 297 base.dispose(this.viewport_);
290 this.viewport_ = null; 298 this.viewport_ = null;
291 } else { 299 } else {
292 var scrollerElement = document.getElementById('scroller'); 300 var scrollerElement = document.getElementById('scroller');
293 this.viewport_ = new remoting.DesktopViewport( 301 this.viewport_ = new remoting.DesktopViewport(
294 scrollerElement || document.body, 302 scrollerElement || document.body,
295 this.plugin_.hostDesktop(), 303 this.plugin_.hostDesktop(),
296 this.host_.options); 304 this.host_.options);
297 if (remoting.windowFrame) { 305 if (remoting.windowFrame) {
298 remoting.windowFrame.setDesktopConnectedView(this); 306 remoting.windowFrame.setDesktopConnectedView(this);
299 } 307 }
300 if (remoting.toolbar) { 308 if (remoting.toolbar) {
301 remoting.toolbar.setDesktopConnectedView(this); 309 remoting.toolbar.setDesktopConnectedView(this);
302 } 310 }
303 if (remoting.optionsMenu) { 311 if (remoting.optionsMenu) {
304 remoting.optionsMenu.setDesktopConnectedView(this); 312 remoting.optionsMenu.setDesktopConnectedView(this);
305 } 313 }
306 314
307 document.body.classList.add('connected'); 315 document.body.classList.add('connected');
308 this.container_.addEventListener( 316 this.container_.addEventListener(
309 'mousemove', this.updateMouseCursorPosition_, true); 317 'mousemove', this.updateMouseCursorPosition_, true);
310 // Activate full-screen related UX. 318 // Activate full-screen related UX.
311 remoting.fullscreen.addListener(this.callOnFullScreenChanged_);
312 this.setFocusHandlers_(); 319 this.setFocusHandlers_();
320 var fullscreen = /** @type {chrome.Event} */ (remoting.fullscreen);
Jamie 2015/03/04 01:06:54 remoting.fullscreen is not a chrome.Event, so you
kelvinp 2015/03/04 21:02:21 Good point. I will create FullscreenEventHook. I
321 this.eventHooks_ = new base.Disposables(
322 // When a window goes full-screen, a resize event is triggered, but the
323 // Fullscreen.isActive call is not guaranteed to return true until the
324 // full-screen event is triggered. In apps v2, the size of the window's
325 // client area is calculated differently in full-screen mode, so register
326 // for both events.
327 new base.DomEventHook(window, 'resize', this.onResize_.bind(this), false),
328 new base.ChromeEventHook(fullscreen, this.onResize_.bind(this)),
Jamie 2015/03/04 01:06:54 I think it would be clearer not to hook fullscreen
kelvinp 2015/03/04 21:02:20 I like this approach better as well :)
329 new base.DomEventHook(document, 'visibilitychange',
330 this.onVisibilityChanged_.bind(this), false),
Jamie 2015/03/04 01:06:54 This hook is unrelated to the comment above. It wo
kelvinp 2015/03/04 21:02:21 Done.
331 new base.ChromeEventHook(fullscreen, this.onFullScreenChanged_.bind(this))
332 );
313 } 333 }
314 }; 334 };
315 335
316 /** 336 /**
317 * Constrains the focus to the plugin element. 337 * Constrains the focus to the plugin element.
318 * @private 338 * @private
319 */ 339 */
320 remoting.DesktopConnectedView.prototype.setFocusHandlers_ = function() { 340 remoting.DesktopConnectedView.prototype.setFocusHandlers_ = function() {
321 this.plugin_.element().addEventListener( 341 this.plugin_.element().addEventListener(
322 'focus', this.callPluginGotFocus_, false); 342 'focus', this.callPluginGotFocus_, false);
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 for (var i = 0; i < rects.length; ++i) { 593 for (var i = 0; i < rects.length; ++i) {
574 var rect = document.createElement('div'); 594 var rect = document.createElement('div');
575 rect.classList.add('debug-region-rect'); 595 rect.classList.add('debug-region-rect');
576 rect.style.left = rects[i][0] + 'px'; 596 rect.style.left = rects[i][0] + 'px';
577 rect.style.top = rects[i][1] +'px'; 597 rect.style.top = rects[i][1] +'px';
578 rect.style.width = rects[i][2] +'px'; 598 rect.style.width = rects[i][2] +'px';
579 rect.style.height = rects[i][3] + 'px'; 599 rect.style.height = rects[i][3] + 'px';
580 this.debugRegionContainer_.appendChild(rect); 600 this.debugRegionContainer_.appendChild(rect);
581 } 601 }
582 } 602 }
583 } 603 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698