| OLD | NEW |
| 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 define("mojo/public/js/bindings/router", [ | 5 define("mojo/public/js/bindings/router", [ |
| 6 "mojo/public/js/bindings/codec", | 6 "mojo/public/js/bindings/codec", |
| 7 "mojo/public/js/bindings/connector", | 7 "mojo/public/js/bindings/connector", |
| 8 "mojo/public/js/bindings/validator", | 8 "mojo/public/js/bindings/validator", |
| 9 ], function(codec, connector, validator) { | 9 ], function(codec, connector, validator) { |
| 10 | 10 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 Router.prototype.encounteredError = function() { | 64 Router.prototype.encounteredError = function() { |
| 65 return this.connector_.encounteredError(); | 65 return this.connector_.encounteredError(); |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 Router.prototype.handleIncomingMessage_ = function(message) { | 68 Router.prototype.handleIncomingMessage_ = function(message) { |
| 69 var noError = validator.validationError.NONE; | 69 var noError = validator.validationError.NONE; |
| 70 var messageValidator = new validator.Validator(message); | 70 var messageValidator = new validator.Validator(message); |
| 71 var err = messageValidator.validateMessageHeader(); | 71 var err = messageValidator.validateMessageHeader(); |
| 72 for (var i = 0; err === noError && i < this.payloadValidators_.length; ++i) | 72 for (var i = 0; err === noError && i < this.payloadValidators_.length; ++i) |
| 73 err = this.payloadValidators_[i](messageValidator); | 73 err = this.payloadValidators_[i](messageValidator); |
| 74 if (err !== noError) | |
| 75 this.close(); | |
| 76 | 74 |
| 75 if (err == noError) |
| 76 this.handleValidIncomingMessage_(message); |
| 77 else |
| 78 this.handleInvalidIncomingMessage_(message, err); |
| 79 }; |
| 80 |
| 81 Router.prototype.handleValidIncomingMessage_ = function(message) { |
| 77 if (message.expectsResponse()) { | 82 if (message.expectsResponse()) { |
| 78 if (this.incomingReceiver_) { | 83 if (this.incomingReceiver_) { |
| 79 this.incomingReceiver_.acceptWithResponder(message, this); | 84 this.incomingReceiver_.acceptWithResponder(message, this); |
| 80 } else { | 85 } else { |
| 81 // If we receive a request expecting a response when the client is not | 86 // If we receive a request expecting a response when the client is not |
| 82 // listening, then we have no choice but to tear down the pipe. | 87 // listening, then we have no choice but to tear down the pipe. |
| 83 this.close(); | 88 this.close(); |
| 84 } | 89 } |
| 85 } else if (message.isResponse()) { | 90 } else if (message.isResponse()) { |
| 86 var reader = new codec.MessageReader(message); | 91 var reader = new codec.MessageReader(message); |
| 87 var requestID = reader.requestID; | 92 var requestID = reader.requestID; |
| 88 var responder = this.responders_[requestID]; | 93 var responder = this.responders_[requestID]; |
| 89 delete this.responders_[requestID]; | 94 delete this.responders_[requestID]; |
| 90 responder.accept(message); | 95 responder.accept(message); |
| 91 } else { | 96 } else { |
| 92 if (this.incomingReceiver_) | 97 if (this.incomingReceiver_) |
| 93 this.incomingReceiver_.accept(message); | 98 this.incomingReceiver_.accept(message); |
| 94 } | 99 } |
| 95 }; | 100 } |
| 101 |
| 102 Router.prototype.handleInvalidIncomingMessage_ = function(message, error) { |
| 103 this.close(); |
| 104 } |
| 96 | 105 |
| 97 Router.prototype.handleConnectionError_ = function(result) { | 106 Router.prototype.handleConnectionError_ = function(result) { |
| 98 for (var each in this.responders_) | 107 for (var each in this.responders_) |
| 99 this.responders_[each].reject(result); | 108 this.responders_[each].reject(result); |
| 100 this.close(); | 109 this.close(); |
| 101 }; | 110 }; |
| 102 | 111 |
| 103 var exports = {}; | 112 var exports = {}; |
| 104 exports.Router = Router; | 113 exports.Router = Router; |
| 105 return exports; | 114 return exports; |
| 106 }); | 115 }); |
| OLD | NEW |