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

Side by Side Diff: remoting/webapp/me2mom/remoting_session.js

Issue 7316011: Release all keys on blur. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 var remoting = chrome.extension.getBackgroundPage().remoting; 5 var remoting = chrome.extension.getBackgroundPage().remoting;
6 6
7 // Chromoting session API version (for this javascript). 7 // Chromoting session API version (for this javascript).
8 // This is compared with the plugin API version to verify that they are 8 // This is compared with the plugin API version to verify that they are
9 // compatible. 9 // compatible.
10 remoting.apiVersion = 2; 10 remoting.apiVersion = 2;
11 11
12 // The oldest API version that we support. 12 // The oldest API version that we support.
13 // This will differ from the |apiVersion| if we maintain backward 13 // This will differ from the |apiVersion| if we maintain backward
14 // compatibility with older API versions. 14 // compatibility with older API versions.
15 remoting.apiMinVersion = 1; 15 remoting.apiMinVersion = 1;
16 16
17 // Message id so that we can identify (and ignore) message fade operations for 17 // Message id so that we can identify (and ignore) message fade operations for
18 // old messages. This starts at 1 and is incremented for each new message. 18 // old messages. This starts at 1 and is incremented for each new message.
19 remoting.messageId = 1; 19 remoting.messageId = 1;
20 20
21 remoting.scaleToFit = false; 21 remoting.scaleToFit = false;
22 22
23 remoting.httpXmppProxy = 23 remoting.httpXmppProxy =
24 'https://chromoting-httpxmpp-oauth2-dev.corp.google.com'; 24 'https://chromoting-httpxmpp-oauth2-dev.corp.google.com';
25 25
26 window.addEventListener("load", init_, false); 26 window.addEventListener("load", init_, false);
27 window.addEventListener('blur', pluginLostFocus_, false);
27 28
28 // This executes a poll loop on the server for more Iq packets, and feeds them 29 // This executes a poll loop on the server for more Iq packets, and feeds them
29 // to the plugin. 30 // to the plugin.
30 function feedIq() { 31 function feedIq() {
31 var xhr = new XMLHttpRequest(); 32 var xhr = new XMLHttpRequest();
32 xhr.open('GET', remoting.httpXmppProxy + '/readIq?host_jid=' + 33 xhr.open('GET', remoting.httpXmppProxy + '/readIq?host_jid=' +
33 encodeURIComponent(remoting.hostJid), true); 34 encodeURIComponent(remoting.hostJid), true);
34 xhr.withCredentials = true; 35 xhr.withCredentials = true;
35 xhr.onreadystatechange = function() { 36 xhr.onreadystatechange = function() {
36 if (xhr.readyState == 4) { 37 if (xhr.readyState == 4) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } 109 }
109 110
110 function checkVersion(plugin) { 111 function checkVersion(plugin) {
111 return remoting.apiVersion >= plugin.apiMinVersion && 112 return remoting.apiVersion >= plugin.apiMinVersion &&
112 plugin.apiVersion >= remoting.apiMinVersion; 113 plugin.apiVersion >= remoting.apiMinVersion;
113 } 114 }
114 115
115 function init_() { 116 function init_() {
116 // Kick off the connection. 117 // Kick off the connection.
117 var plugin = document.getElementById('remoting'); 118 var plugin = document.getElementById('remoting');
118
119 remoting.plugin = plugin; 119 remoting.plugin = plugin;
120 120
121 // Only allow https connections to the httpXmppProxy. 121 // Only allow https connections to the httpXmppProxy.
122 var regExp = /^ *https:\/\//; 122 var regExp = /^ *https:\/\//;
123 if (remoting.httpXmppProxy.search(regExp) == -1) { 123 if (remoting.httpXmppProxy.search(regExp) == -1) {
124 addToDebugLog('Aborting. httpXmppProxy does not specify https protocol: ' + 124 addToDebugLog('Aborting. httpXmppProxy does not specify https protocol: ' +
125 remoting.httpXmppProxy); 125 remoting.httpXmppProxy);
126 return; 126 return;
127 } 127 }
128 128
(...skipping 14 matching lines...) Expand all
143 if (!checkVersion(plugin)) { 143 if (!checkVersion(plugin)) {
144 // TODO(garykac): We need better messaging here. Perhaps an install link. 144 // TODO(garykac): We need better messaging here. Perhaps an install link.
145 setClientStateMessage("Out of date. Please re-install."); 145 setClientStateMessage("Out of date. Please re-install.");
146 return; 146 return;
147 } 147 }
148 148
149 addToDebugLog('Connect as user ' + remoting.username); 149 addToDebugLog('Connect as user ' + remoting.username);
150 registerConnection(); 150 registerConnection();
151 } 151 }
152 152
153 function pluginLostFocus_() {
154 // If the plug loses input focus, release all keys as a precaution against
155 // leaving them 'stuck down' on the host.
156 if (remoting.plugin) {
157 remoting.plugin.releaseAllKeys();
158 }
159 }
160
153 function toggleScaleToFit() { 161 function toggleScaleToFit() {
154 remoting.scaleToFit = !remoting.scaleToFit; 162 remoting.scaleToFit = !remoting.scaleToFit;
155 document.getElementById('scale-to-fit-toggle').value = 163 document.getElementById('scale-to-fit-toggle').value =
156 remoting.scaleToFit ? 'No scaling' : 'Scale to fit'; 164 remoting.scaleToFit ? 'No scaling' : 'Scale to fit';
157 remoting.plugin.setScaleToFit(remoting.scaleToFit); 165 remoting.plugin.setScaleToFit(remoting.scaleToFit);
158 } 166 }
159 167
160 /** 168 /**
161 * This is the callback method that the plugin calls to request username and 169 * This is the callback method that the plugin calls to request username and
162 * password for logging into the remote host. For Me2Mom we are pre-authorized 170 * password for logging into the remote host. For Me2Mom we are pre-authorized
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 'Bandwidth: ' + videoBandwidth.toFixed(2) + units + 316 'Bandwidth: ' + videoBandwidth.toFixed(2) + units +
309 ', Capture: ' + videoCaptureLatency.toFixed(2) + 'ms' + 317 ', Capture: ' + videoCaptureLatency.toFixed(2) + 'ms' +
310 ', Encode: ' + videoEncodeLatency.toFixed(2) + 'ms' + 318 ', Encode: ' + videoEncodeLatency.toFixed(2) + 'ms' +
311 ', Decode: ' + videoDecodeLatency.toFixed(2) + 'ms' + 319 ', Decode: ' + videoDecodeLatency.toFixed(2) + 'ms' +
312 ', Render: ' + videoRenderLatency.toFixed(2) + 'ms' + 320 ', Render: ' + videoRenderLatency.toFixed(2) + 'ms' +
313 ', Latency: ' + roundTripLatency.toFixed(2) + 'ms'); 321 ', Latency: ' + roundTripLatency.toFixed(2) + 'ms');
314 322
315 // Update the stats once per second. 323 // Update the stats once per second.
316 window.setTimeout('updateStatusBarStats()', 1000); 324 window.setTimeout('updateStatusBarStats()', 1000);
317 } 325 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698