OLD | NEW |
---|---|
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 * Implements a basic UX control for a connected remoting session. | 7 * Implements a basic UX control for a connected remoting session. |
8 */ | 8 */ |
9 | 9 |
10 /** @suppress {duplicate} */ | 10 /** @suppress {duplicate} */ |
(...skipping 27 matching lines...) Expand all Loading... | |
38 /** @private */ | 38 /** @private */ |
39 this.viewportElement_ = viewportElement; | 39 this.viewportElement_ = viewportElement; |
40 | 40 |
41 /** @private */ | 41 /** @private */ |
42 this.plugin_ = plugin; | 42 this.plugin_ = plugin; |
43 | 43 |
44 /** private */ | 44 /** private */ |
45 this.cursor_ = new remoting.ConnectedView.Cursor( | 45 this.cursor_ = new remoting.ConnectedView.Cursor( |
46 plugin, viewportElement, cursorElement); | 46 plugin, viewportElement, cursorElement); |
47 | 47 |
48 /** @private {Element} */ | |
49 this.debugRegionContainer_ = | |
50 viewportElement.querySelector('.debug-region-container'); | |
51 | |
48 var pluginElement = plugin.element(); | 52 var pluginElement = plugin.element(); |
49 | 53 |
50 /** private */ | 54 /** private */ |
51 this.disposables_ = new base.Disposables( | 55 this.disposables_ = new base.Disposables( |
52 this.cursor_, | 56 this.cursor_, |
53 new base.DomEventHook(pluginElement, 'focus', | 57 new base.DomEventHook(pluginElement, 'focus', |
54 this.onPluginGotFocus_.bind(this), false), | 58 this.onPluginGotFocus_.bind(this), false), |
55 new base.DomEventHook(pluginElement, 'blur', | 59 new base.DomEventHook(pluginElement, 'blur', |
56 this.onPluginLostFocus_.bind(this), false), | 60 this.onPluginLostFocus_.bind(this), false), |
57 new base.DomEventHook(document, 'visibilitychange', | 61 new base.DomEventHook(document, 'visibilitychange', |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 this.plugin_.releaseAllKeys(); | 120 this.plugin_.releaseAllKeys(); |
117 | 121 |
118 // Focus should stay on the element, not (for example) the toolbar. | 122 // Focus should stay on the element, not (for example) the toolbar. |
119 // Due to crbug.com/246335, we can't restore the focus immediately, | 123 // Due to crbug.com/246335, we can't restore the focus immediately, |
120 // otherwise the plugin gets confused about whether or not it has focus. | 124 // otherwise the plugin gets confused about whether or not it has focus. |
121 window.setTimeout( | 125 window.setTimeout( |
122 this.plugin_.element().focus.bind(this.plugin_.element()), 0); | 126 this.plugin_.element().focus.bind(this.plugin_.element()), 0); |
123 }; | 127 }; |
124 | 128 |
125 /** | 129 /** |
130 * Handles dirty region debug messages. | |
131 * | |
132 * @param {{rects:Array<Array<number>>}} region Dirty region of the latest | |
133 * frame. | |
134 */ | |
135 remoting.ConnectedView.prototype.handleDebugRegion = function(region) { | |
kelvinp
2015/03/17 01:06:17
Moved from DesktopConnectedView.
| |
136 while (this.debugRegionContainer_.firstChild) { | |
137 this.debugRegionContainer_.removeChild( | |
138 this.debugRegionContainer_.firstChild); | |
139 } | |
140 if (region.rects) { | |
141 var rects = region.rects; | |
142 for (var i = 0; i < rects.length; ++i) { | |
143 var rect = document.createElement('div'); | |
144 rect.classList.add('debug-region-rect'); | |
145 rect.style.left = rects[i][0] + 'px'; | |
146 rect.style.top = rects[i][1] +'px'; | |
147 rect.style.width = rects[i][2] +'px'; | |
148 rect.style.height = rects[i][3] + 'px'; | |
149 this.debugRegionContainer_.appendChild(rect); | |
150 } | |
151 } | |
152 }; | |
153 | |
154 /** | |
155 * Enables or disables rendering of dirty regions for debugging. | |
156 * @param {boolean} enable True to enable rendering. | |
157 */ | |
158 remoting.ConnectedView.prototype.enableDebugRegion = function(enable) { | |
kelvinp
2015/03/17 01:06:17
Moved from ClientSession.
| |
159 if (enable) { | |
160 this.plugin_.setDebugDirtyRegionHandler(this.handleDebugRegion.bind(this)); | |
161 } else { | |
162 this.plugin_.setDebugDirtyRegionHandler(null); | |
163 } | |
164 }; | |
165 | |
166 /** | |
126 * @param {remoting.ClientPlugin} plugin | 167 * @param {remoting.ClientPlugin} plugin |
127 * @param {HTMLElement} viewportElement | 168 * @param {HTMLElement} viewportElement |
128 * @param {HTMLElement} cursorElement | 169 * @param {HTMLElement} cursorElement |
129 * | 170 * |
130 * @constructor | 171 * @constructor |
131 * @implements {base.Disposable} | 172 * @implements {base.Disposable} |
132 */ | 173 */ |
133 remoting.ConnectedView.Cursor = function( | 174 remoting.ConnectedView.Cursor = function( |
134 plugin, viewportElement, cursorElement) { | 175 plugin, viewportElement, cursorElement) { |
135 /** @private */ | 176 /** @private */ |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
170 /** | 211 /** |
171 * @param {Event} event | 212 * @param {Event} event |
172 * @private | 213 * @private |
173 */ | 214 */ |
174 remoting.ConnectedView.Cursor.prototype.onMouseMoved_ = function(event) { | 215 remoting.ConnectedView.Cursor.prototype.onMouseMoved_ = function(event) { |
175 this.cursorElement_.style.top = event.offsetY + 'px'; | 216 this.cursorElement_.style.top = event.offsetY + 'px'; |
176 this.cursorElement_.style.left = event.offsetX + 'px'; | 217 this.cursorElement_.style.left = event.offsetX + 'px'; |
177 }; | 218 }; |
178 | 219 |
179 })(); | 220 })(); |
OLD | NEW |