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

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

Issue 955283002: Converted remoting.Error from an enum to a class (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
« no previous file with comments | « remoting/webapp/crd/js/xmpp_connection.js ('k') | remoting/webapp/unittests/error_unittest.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 'use strict'; 5 'use strict';
6 6
7 /** @suppress {duplicate} */ 7 /** @suppress {duplicate} */
8 var remoting = remoting || {}; 8 var remoting = remoting || {};
9 9
10 /** 10 /**
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 /** 144 /**
145 * @param {Element} stanza 145 * @param {Element} stanza
146 * @private 146 * @private
147 */ 147 */
148 remoting.XmppLoginHandler.prototype.onStanza_ = function(stanza) { 148 remoting.XmppLoginHandler.prototype.onStanza_ = function(stanza) {
149 switch (this.state_) { 149 switch (this.state_) {
150 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER: 150 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER:
151 if (stanza.querySelector('features>starttls')) { 151 if (stanza.querySelector('features>starttls')) {
152 this.state_ = remoting.XmppLoginHandler.State.WAIT_STARTTLS_RESPONSE; 152 this.state_ = remoting.XmppLoginHandler.State.WAIT_STARTTLS_RESPONSE;
153 } else { 153 } else {
154 this.onError_(remoting.Error.UNEXPECTED, "Server doesn't support TLS."); 154 this.onError_(
155 remoting.Error.unexpected(),
156 "Server doesn't support TLS.");
155 } 157 }
156 break; 158 break;
157 159
158 case remoting.XmppLoginHandler.State.WAIT_STARTTLS_RESPONSE: 160 case remoting.XmppLoginHandler.State.WAIT_STARTTLS_RESPONSE:
159 if (stanza.localName == "proceed") { 161 if (stanza.localName == "proceed") {
160 this.state_ = remoting.XmppLoginHandler.State.STARTING_TLS; 162 this.state_ = remoting.XmppLoginHandler.State.STARTING_TLS;
161 this.startTlsCallback_(); 163 this.startTlsCallback_();
162 } else { 164 } else {
163 this.onError_(remoting.Error.UNEXPECTED, 165 this.onError_(remoting.Error.unexpected(),
164 "Failed to start TLS: " + 166 "Failed to start TLS: " +
165 (new XMLSerializer().serializeToString(stanza))); 167 (new XMLSerializer().serializeToString(stanza)));
166 } 168 }
167 break; 169 break;
168 170
169 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_TLS: 171 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_TLS:
170 var mechanisms = Array.prototype.map.call( 172 var mechanisms = Array.prototype.map.call(
171 stanza.querySelectorAll('features>mechanisms>mechanism'), 173 stanza.querySelectorAll('features>mechanisms>mechanism'),
172 /** @param {Element} m */ 174 /** @param {Element} m */
173 function(m) { return m.textContent; }); 175 function(m) { return m.textContent; });
174 if (mechanisms.indexOf("X-OAUTH2")) { 176 if (mechanisms.indexOf("X-OAUTH2")) {
175 this.onError_(remoting.Error.UNEXPECTED, 177 this.onError_(remoting.Error.unexpected(),
176 "OAuth2 is not supported by the server."); 178 "OAuth2 is not supported by the server.");
177 return; 179 return;
178 } 180 }
179 181
180 this.state_ = remoting.XmppLoginHandler.State.WAIT_AUTH_RESULT; 182 this.state_ = remoting.XmppLoginHandler.State.WAIT_AUTH_RESULT;
181 183
182 break; 184 break;
183 185
184 case remoting.XmppLoginHandler.State.WAIT_AUTH_RESULT: 186 case remoting.XmppLoginHandler.State.WAIT_AUTH_RESULT:
185 if (stanza.localName == 'success') { 187 if (stanza.localName == 'success') {
186 this.state_ = 188 this.state_ =
187 remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_AUTH; 189 remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_AUTH;
188 this.startStream_( 190 this.startStream_(
189 '<iq type="set" id="0">' + 191 '<iq type="set" id="0">' +
190 '<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">' + 192 '<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">' +
191 '<resource>chromoting</resource>'+ 193 '<resource>chromoting</resource>'+
192 '</bind>' + 194 '</bind>' +
193 '</iq>' + 195 '</iq>' +
194 '<iq type="set" id="1">' + 196 '<iq type="set" id="1">' +
195 '<session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>' + 197 '<session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>' +
196 '</iq>'); 198 '</iq>');
197 } else { 199 } else {
198 this.onError_(remoting.Error.AUTHENTICATION_FAILED, 200 this.onError_(
199 'Failed to authenticate: ' + 201 new remoting.Error(remoting.Error.Tag.AUTHENTICATION_FAILED),
200 (new XMLSerializer().serializeToString(stanza))); 202 'Failed to authenticate: ' +
203 (new XMLSerializer().serializeToString(stanza)));
201 } 204 }
202 break; 205 break;
203 206
204 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_AUTH: 207 case remoting.XmppLoginHandler.State.WAIT_STREAM_HEADER_AFTER_AUTH:
205 if (stanza.querySelector('features>bind')) { 208 if (stanza.querySelector('features>bind')) {
206 this.state_ = remoting.XmppLoginHandler.State.WAIT_BIND_RESULT; 209 this.state_ = remoting.XmppLoginHandler.State.WAIT_BIND_RESULT;
207 } else { 210 } else {
208 this.onError_(remoting.Error.UNEXPECTED, 211 this.onError_(remoting.Error.unexpected(),
209 "Server doesn't support bind after authentication."); 212 "Server doesn't support bind after authentication.");
210 } 213 }
211 break; 214 break;
212 215
213 case remoting.XmppLoginHandler.State.WAIT_BIND_RESULT: 216 case remoting.XmppLoginHandler.State.WAIT_BIND_RESULT:
214 var jidElement = stanza.querySelector('iq>bind>jid'); 217 var jidElement = stanza.querySelector('iq>bind>jid');
215 if (stanza.getAttribute('id') != '0' || 218 if (stanza.getAttribute('id') != '0' ||
216 stanza.getAttribute('type') != 'result' || !jidElement) { 219 stanza.getAttribute('type') != 'result' || !jidElement) {
217 this.onError_(remoting.Error.UNEXPECTED, 220 this.onError_(remoting.Error.unexpected(),
218 'Received unexpected response to bind: ' + 221 'Received unexpected response to bind: ' +
219 (new XMLSerializer().serializeToString(stanza))); 222 (new XMLSerializer().serializeToString(stanza)));
220 return; 223 return;
221 } 224 }
222 this.jid_ = jidElement.textContent; 225 this.jid_ = jidElement.textContent;
223 this.state_ = remoting.XmppLoginHandler.State.WAIT_SESSION_IQ_RESULT; 226 this.state_ = remoting.XmppLoginHandler.State.WAIT_SESSION_IQ_RESULT;
224 break; 227 break;
225 228
226 case remoting.XmppLoginHandler.State.WAIT_SESSION_IQ_RESULT: 229 case remoting.XmppLoginHandler.State.WAIT_SESSION_IQ_RESULT:
227 if (stanza.getAttribute('id') != '1' || 230 if (stanza.getAttribute('id') != '1' ||
228 stanza.getAttribute('type') != 'result') { 231 stanza.getAttribute('type') != 'result') {
229 this.onError_(remoting.Error.UNEXPECTED, 232 this.onError_(remoting.Error.unexpected(),
230 'Failed to start session: ' + 233 'Failed to start session: ' +
231 (new XMLSerializer().serializeToString(stanza))); 234 (new XMLSerializer().serializeToString(stanza)));
232 return; 235 return;
233 } 236 }
234 this.state_ = remoting.XmppLoginHandler.State.DONE; 237 this.state_ = remoting.XmppLoginHandler.State.DONE;
235 this.onHandshakeDoneCallback_(this.jid_, this.streamParser_); 238 this.onHandshakeDoneCallback_(this.jid_, this.streamParser_);
236 break; 239 break;
237 240
238 default: 241 default:
239 base.debug.assert(false); 242 base.debug.assert(false);
(...skipping 16 matching lines...) Expand all
256 'xmlns:auth="http://www.google.com/talk/protocol/auth">' + 259 'xmlns:auth="http://www.google.com/talk/protocol/auth">' +
257 cookie + 260 cookie +
258 '</auth>'); 261 '</auth>');
259 }; 262 };
260 263
261 /** 264 /**
262 * @param {string} text 265 * @param {string} text
263 * @private 266 * @private
264 */ 267 */
265 remoting.XmppLoginHandler.prototype.onParserError_ = function(text) { 268 remoting.XmppLoginHandler.prototype.onParserError_ = function(text) {
266 this.onError_(remoting.Error.UNEXPECTED, text); 269 this.onError_(remoting.Error.unexpected(), text);
267 } 270 }
268 271
269 /** 272 /**
270 * @param {string} firstMessage Message to send after stream header. 273 * @param {string} firstMessage Message to send after stream header.
271 * @private 274 * @private
272 */ 275 */
273 remoting.XmppLoginHandler.prototype.startStream_ = function(firstMessage) { 276 remoting.XmppLoginHandler.prototype.startStream_ = function(firstMessage) {
274 this.sendMessageCallback_('<stream:stream to="' + this.server_ + 277 this.sendMessageCallback_('<stream:stream to="' + this.server_ +
275 '" version="1.0" xmlns="jabber:client" ' + 278 '" version="1.0" xmlns="jabber:client" ' +
276 'xmlns:stream="http://etherx.jabber.org/streams">' + 279 'xmlns:stream="http://etherx.jabber.org/streams">' +
277 firstMessage); 280 firstMessage);
278 this.streamParser_ = new remoting.XmppStreamParser(); 281 this.streamParser_ = new remoting.XmppStreamParser();
279 this.streamParser_.setCallbacks(this.onStanza_.bind(this), 282 this.streamParser_.setCallbacks(this.onStanza_.bind(this),
280 this.onParserError_.bind(this)); 283 this.onParserError_.bind(this));
281 } 284 }
282 285
283 /** 286 /**
284 * @param {!remoting.Error} error 287 * @param {!remoting.Error} error
285 * @param {string} text 288 * @param {string} text
286 * @private 289 * @private
287 */ 290 */
288 remoting.XmppLoginHandler.prototype.onError_ = function(error, text) { 291 remoting.XmppLoginHandler.prototype.onError_ = function(error, text) {
289 if (this.state_ != remoting.XmppLoginHandler.State.ERROR) { 292 if (this.state_ != remoting.XmppLoginHandler.State.ERROR) {
290 this.onErrorCallback_(error, text); 293 this.onErrorCallback_(error, text);
291 this.state_ = remoting.XmppLoginHandler.State.ERROR; 294 this.state_ = remoting.XmppLoginHandler.State.ERROR;
292 } else { 295 } else {
293 console.error(text); 296 console.error(text);
294 } 297 }
295 } 298 }
OLDNEW
« no previous file with comments | « remoting/webapp/crd/js/xmpp_connection.js ('k') | remoting/webapp/unittests/error_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698