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

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

Issue 7065036: Add basic versioning check to Chromoting's plugin/JS code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 9 years, 7 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
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Maximum numer of lines to record in the debug log. 5 // Maximum numer of lines to record in the debug log.
6 // Only the most recent <n> lines are displayed. 6 // Only the most recent <n> lines are displayed.
7 var MAX_DEBUG_LOG_SIZE = 1000; 7 var MAX_DEBUG_LOG_SIZE = 1000;
8
8 var remoting = chrome.extension.getBackgroundPage().remoting; 9 var remoting = chrome.extension.getBackgroundPage().remoting;
9 10
11 // Chromoting session API version (for this javascript).
12 // This is compared with the plugin API version to verify that they are
13 // compatible.
14 remoting.apiVersion = 1;
15
16 // The oldest API version that we support.
17 // This will differ from the |apiVersion| if we maintain backward
18 // compatibility with older API versions.
19 remoting.apiMinVersion = 1;
20
10 // Message id so that we can identify (and ignore) message fade operations for 21 // Message id so that we can identify (and ignore) message fade operations for
11 // old messages. This starts at 1 and is incremented for each new message. 22 // old messages. This starts at 1 and is incremented for each new message.
12 remoting.messageId = 1; 23 remoting.messageId = 1;
13 24
14 remoting.scaleToFit = false; 25 remoting.scaleToFit = false;
15 26
16 // Default to trying to sandboxed connections. 27 // Default to trying to sandboxed connections.
17 remoting.connectMethod = 'sandboxed'; 28 remoting.connectMethod = 'sandboxed';
18 remoting.httpXmppProxy = 29 remoting.httpXmppProxy =
19 'https://chromoting-httpxmpp-oauth2-dev.corp.google.com'; 30 'https://chromoting-httpxmpp-oauth2-dev.corp.google.com';
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 var xhr = new XMLHttpRequest(); 99 var xhr = new XMLHttpRequest();
89 xhr.open('POST', remoting.httpXmppProxy + '/sendIq', true); 100 xhr.open('POST', remoting.httpXmppProxy + '/sendIq', true);
90 xhr.withCredentials = true; 101 xhr.withCredentials = true;
91 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 102 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
92 xhr.send('to=' + encodeURIComponent(to) + 103 xhr.send('to=' + encodeURIComponent(to) +
93 '&payload_xml=' + encodeURIComponent(payload_xml) + 104 '&payload_xml=' + encodeURIComponent(payload_xml) +
94 '&id=' + id + '&type=' + type + 105 '&id=' + id + '&type=' + type +
95 '&host_jid=' + encodeURIComponent(remoting.hostjid)); 106 '&host_jid=' + encodeURIComponent(remoting.hostjid));
96 } 107 }
97 108
109 function checkVersion(plugin) {
110 return remoting.apiVersion >= plugin.apiMinVersion &&
111 plugin.apiVersion >= remoting.apiMinVersion;
112 }
113
98 function init() { 114 function init() {
99 // Kick off the connection. 115 // Kick off the connection.
100 var plugin = document.getElementById('remoting'); 116 var plugin = document.getElementById('remoting');
101 117
102 remoting.plugin = plugin; 118 remoting.plugin = plugin;
103 119
104 // Only allow https connections to the httpXmppProxy. 120 // Only allow https connections to the httpXmppProxy.
105 if (remoting.httpXmppProxy.search(/^ *https:\/\//) == -1) { 121 if (remoting.httpXmppProxy.search(/^ *https:\/\//) == -1) {
106 addToDebugLog('Aborting. httpXmppProxy does not specify https protocol: ' + 122 addToDebugLog('Aborting. httpXmppProxy does not specify https protocol: ' +
107 remoting.httpXmppProxy); 123 remoting.httpXmppProxy);
108 return; 124 return;
109 } 125 }
110 126
111 // Setup the callback that the plugin will call when the connection status 127 // Setup the callback that the plugin will call when the connection status
112 // has changes and the UI needs to be updated. It needs to be an object with 128 // has changes and the UI needs to be updated. It needs to be an object with
113 // a 'callback' property that contains the callback function. 129 // a 'callback' property that contains the callback function.
114 plugin.connectionInfoUpdate = connectionInfoUpdateCallback; 130 plugin.connectionInfoUpdate = connectionInfoUpdateCallback;
115 plugin.debugInfo = debugInfoCallback; 131 plugin.debugInfo = debugInfoCallback;
116 plugin.desktopSizeUpdate = desktopSizeChanged; 132 plugin.desktopSizeUpdate = desktopSizeChanged;
117 plugin.loginChallenge = loginChallengeCallback; 133 plugin.loginChallenge = loginChallengeCallback;
118 134
135 if (!checkVersion(plugin)) {
136 // TODO(garykac): We need better messaging here. Perhaps an install link.
137 setClientStateMessage("Out of date. Please re-install.");
138 return;
139 }
140
119 addToDebugLog('Connect as user ' + remoting.username); 141 addToDebugLog('Connect as user ' + remoting.username);
120 142
121 // TODO(garykac): Clean exit if |connect| isn't a function. 143 // TODO(garykac): Clean exit if |connect| isn't a function.
122 if (typeof plugin.connect === 'function') { 144 if (typeof plugin.connect === 'function') {
123 if (remoting.connectMethod == 'sandboxed') { 145 if (remoting.connectMethod == 'sandboxed') {
124 registerConnection(); 146 registerConnection();
125 } else { 147 } else {
126 plugin.connect(remoting.username, remoting.hostjid, 148 plugin.connect(remoting.username, remoting.hostjid,
127 remoting.xmppAuthToken, remoting.accessCode); 149 remoting.xmppAuthToken, remoting.accessCode);
128 } 150 }
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 setClientStateMessage( 332 setClientStateMessage(
311 'Video stats: bandwidth: ' + videoBandwidth.toFixed(2) + 'Kbps' + 333 'Video stats: bandwidth: ' + videoBandwidth.toFixed(2) + 'Kbps' +
312 ', Latency: capture: ' + videoCaptureLatency.toFixed(2) + 'ms' + 334 ', Latency: capture: ' + videoCaptureLatency.toFixed(2) + 'ms' +
313 ', encode: ' + videoEncodeLatency.toFixed(2) + 'ms' + 335 ', encode: ' + videoEncodeLatency.toFixed(2) + 'ms' +
314 ', decode: ' + videoDecodeLatency.toFixed(2) + 'ms' + 336 ', decode: ' + videoDecodeLatency.toFixed(2) + 'ms' +
315 ', render: ' + videoRenderLatency.toFixed(2) + 'ms'); 337 ', render: ' + videoRenderLatency.toFixed(2) + 'ms');
316 338
317 // Update the stats once per second. 339 // Update the stats once per second.
318 window.setTimeout('updateStatusBarStats()', 1000); 340 window.setTimeout('updateStatusBarStats()', 1000);
319 } 341 }
OLDNEW
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698